GithubHelp home page GithubHelp logo

ntap / quant Goto Github PK

View Code? Open in Web Editor NEW
286.0 33.0 35.0 6.85 MB

QUIC implementation for POSIX and IoT platforms

License: BSD 2-Clause "Simplified" License

CMake 3.69% C 88.36% Shell 4.78% Dockerfile 0.11% C++ 1.66% Makefile 1.41%
quic ietf riot-os posix netmap netapp-public

quant's People

Contributors

britram avatar bsdphk avatar kenmcmil avatar larseggert avatar pfent avatar ptrd avatar saigut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quant's Issues

tx_tlp conn.c:468 ABORT: assertion failed

Here's a log with an assertion failure. I can't tell what's going wrong here. It seems like maybe trying to send data on a stream that doesn't exist?


0.030   q_init quic.c:507 quant/socket 0.0.16/e2c7fbf with libev/epoll 4.22 ready
        q_init quic.c:508 submit bug reports at https://github.com/NTAP/quant/issues
0.032   q_init quic.c:527 debug build, storing fuzzer corpus data
        q_bind quic.c:362 binding serv socket on port 4443
        init_rec recovery.c:558 in_flight=0 (+0), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1311 serv conn ? on port 4443 created
        new_conn conn.c:1313 serv conn ? state conn_clsd -> conn_idle
        q_bind quic.c:364 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
0.148   rx_pkts conn.c:918 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:0000000000000003
        init_rec recovery.c:558 in_flight=0 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1311 serv conn 0:0000000000000003 on port 4443 created
        new_conn conn.c:1313 serv conn 0:0000000000000003 state conn_clsd -> conn_idle
0.148   log_pkt pkt.c:123 RX from=127.0.0.1:4987 len=1216 0xff=Initial vers=0xff00000f dcid=0000000000000003 scid=000000000000000d tok= len=1207 nr=0
        rx_pkt conn.c:680 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:895 PADDING len=939
        rx_pkt conn.c:705 serv conn 0:0000000000000003 state conn_idle -> conn_opng
        update_act_scid conn.c:503 hshk switch to scid 0:015df21cc269b634 for serv conn (was 0:0000000000000003)
        on_ch tls.c:306 	SNI = 
        on_ch tls.c:309 	ALPN = 
        chk_tp tls.c:471 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:483 	initial_max_data = 16384
        chk_tp tls.c:500 	idle_timeout = 60
        chk_tp tls.c:478 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:465 	initial_max_stream_data_uni = 8192
0.151   rx_crypto conn.c:583 serv conn 0:015df21cc269b634 state conn_opng -> conn_estb
        tx conn.c:429 data TX on serv conn 0:015df21cc269b634 strm -4 w/1 pkt in queue
        enc_pkt pkt.c:395 hshk switch to scid 0:82063f2ad8736687 for serv conn (was 0:015df21cc269b634)
        update_act_scid conn.c:503 hshk switch to scid 0:82063f2ad8736687 for serv conn (was 0:015df21cc269b634)
0.151   log_pkt pkt.c:176 TX to=127.0.0.1:4987 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=82063f2ad8736687 tok=0847c4c8e09c14395cbba3e76f8945a06a0c491ef11dbca37cb7507deecbacff015df21cc269b634 len=0 nr=0
        enc_ack_frame frame.c:1171 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1099 PADDING len=97
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:311 in_flight=299 (+299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.200000 sec on serv conn 0:82063f2ad8736687
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -2 w/2 pkts in queue
0.151   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=82063f2ad8736687 len=0 nr=0
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:311 in_flight=1551 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.200000 sec on serv conn 0:82063f2ad8736687
0.152   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=82063f2ad8736687 len=0 nr=1
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:311 in_flight=1987 (+436), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.200000 sec on serv conn 0:82063f2ad8736687
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.250   log_pkt pkt.c:133 RX from=127.0.0.1:4987 len=49 0xfd=Handshake vers=0xff00000f dcid=82063f2ad8736687 scid=000000000000000d len=41 nr=0
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        detect_lost_pkts recovery.c:210 in_flight=735 (-1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.101899 (+0.101899), rttvar=0.050950 (+0.050950)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.101899 sec on serv conn 0:82063f2ad8736687
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
0.353   on_ld_alarm recovery.c:226 crypto RTX #1 on serv conn 0:82063f2ad8736687
        detect_lost_pkts recovery.c:171 pkt 0 considered lost
        detect_lost_pkts recovery.c:210 in_flight=436 (-299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.101899 (+0.000000), rttvar=0.050950 (+0.000000)
        detect_lost_pkts recovery.c:210 in_flight=436 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.101899 (+0.000000), rttvar=0.050950 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -4 w/1 pkt in queue
0.353   log_pkt pkt.c:176 TX to=127.0.0.1:4987 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=82063f2ad8736687 tok=0847c4c8e09c14395cbba3e76f8945a06a0c491ef11dbca37cb7507deecbacff015df21cc269b634 len=274 nr=1
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:311 in_flight=735 (+299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.101899 (+0.000000), rttvar=0.050950 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.407597 sec on serv conn 0:82063f2ad8736687
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
0.416   log_pkt pkt.c:123 RX from=127.0.0.1:4987 len=1216 0xff=Initial vers=0xff00000f dcid=82063f2ad8736687 scid=000000000000000d tok= len=1207 nr=1
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        on_pkt_acked recovery.c:493 0 was RTX'ed as 1
        detect_lost_pkts recovery.c:210 in_flight=735 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.122720 (+0.020821), rttvar=0.079854 (+0.028905)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.181780 sec on serv conn 0:82063f2ad8736687
        dec_frames frame.c:895 PADDING len=1181
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
0.505   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=56 0x30=Short kyph=0 dcid=82063f2ad8736687 nr=0
        rx_pkts conn.c:998 received invalid 56-byte 0x30-type pkt, ignoring
0.598   on_ld_alarm recovery.c:226 crypto RTX #1 on serv conn 0:82063f2ad8736687
        detect_lost_pkts recovery.c:210 in_flight=735 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.122720 (+0.000000), rttvar=0.079854 (+0.000000)
        detect_lost_pkts recovery.c:210 in_flight=735 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.122720 (+0.000000), rttvar=0.079854 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
0.750   log_pkt pkt.c:133 RX from=127.0.0.1:4987 len=104 0xfd=Handshake vers=0xff00000f dcid=82063f2ad8736687 scid=000000000000000d len=96 nr=2
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        on_pkt_acked recovery.c:506 stream -2 fully acked
        detect_lost_pkts recovery.c:210 in_flight=299 (-436), cwnd=12436 (+436), ssthresh=0 (+0), srtt=0.182664 (+0.059944), rttvar=0.179779 (+0.099925)
        set_ld_timer recovery.c:129 ignoring crypto RTX alarm in -0.032137 sec on serv conn 0:82063f2ad8736687
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=52 [seq]
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:82063f2ad8736687 strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
0.751   log_pkt pkt.c:194 TX to=127.0.0.1:4987 0x31=Short kyph=0 dcid=000000000000000d nr=0
        enc_new_token_frame frame.c:1498 NEW_TOKEN len=40 tok=0847c4c8e09c14395cbba3e76f8945a06a0c491ef11dbca37cb7507deecbacff015df21cc269b634
        enc_new_cid_frame frame.c:1477 NEW_CONNECTION_ID seq=1 len=8 cid=1:b80cb41b2e5ecf3a tok=dc85f9d14a46086b93e9c368de18ca1d
        on_pkt_sent recovery.c:311 in_flight=394 (+95), cwnd=12436 (+0), ssthresh=0 (+0), srtt=0.182664 (+0.000000), rttvar=0.179779 (+0.000000)
        set_ld_timer recovery.c:129 ignoring crypto RTX alarm in -0.032137 sec on serv conn 0:82063f2ad8736687
0.776   ack_alarm pn.c:56 ACK timer fired on serv conn 0:82063f2ad8736687 epoch 2
0.776   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=82063f2ad8736687 len=0 nr=2
        enc_ack_frame frame.c:1171 ACK lg=2 delay=3215 (25720 usec) cnt=1 block=0 [2]
        enc_ack_frame frame.c:1164 ACK gap=0 block=0 [0]
0.888   log_pkt pkt.c:123 RX from=127.0.0.1:4987 len=1216 0xff=Initial vers=0xff00000f dcid=82063f2ad8736687 scid=000000000000000d tok= len=1207 nr=2
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        on_pkt_acked recovery.c:506 stream -4 fully acked
        detect_lost_pkts recovery.c:210 in_flight=95 (-299), cwnd=12735 (+299), ssthresh=0 (+0), srtt=0.226684 (+0.044020), rttvar=0.222874 (+0.043095)
        set_ld_timer recovery.c:134 TLP alarm in 0.227669 sec on serv conn 0:82063f2ad8736687
        dec_frames frame.c:895 PADDING len=1181
0.980   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=41 0x30=Short kyph=0 dcid=82063f2ad8736687 nr=2
        new_stream stream.c:101 serv conn 0:82063f2ad8736687 strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=7/65535 len=8 coff=8/393210 [ooo]
        dec_frames frame.c:895 PADDING len=15
1.005   ack_alarm pn.c:56 ACK timer fired on serv conn 0:82063f2ad8736687 epoch 3
1.005   log_pkt pkt.c:194 TX to=127.0.0.1:4987 0x33=Short kyph=0 dcid=000000000000000d nr=1
        enc_ack_frame frame.c:1171 ACK lg=2 delay=3186 (25488 usec) cnt=0 block=0 [2]
1.116   on_ld_alarm recovery.c:239 TLP alarm #0 on serv conn 0:82063f2ad8736687
1.116   tx_tlp conn.c:468 ABORT: assertion failed 
        meta(v).stream 
        have stream 0 [errno 17 = File exists]
        /usr/lib/x86_64-linux-gnu/libasan.so.4(+0x558c0) [0x7ff7133de8c0]
        util_die at /home/mcmillan/projects/quant/Debug/external/warp-prefix/src/warp/lib/src/util.c:224
        tx_tlp at /home/mcmillan/projects/quant/lib/src/conn.c:470
        on_ld_alarm at /home/mcmillan/projects/quant/lib/src/recovery.c:253
        /usr/lib/x86_64-linux-gnu/libev.so.4(ev_invoke_pending+0x53) [0x7ff712559d73]
        /usr/lib/x86_64-linux-gnu/libev.so.4(ev_run+0x9ee) [0x7ff71255d3de]
        q_rx_ready at /home/mcmillan/projects/quant/lib/src/quic.c:660 (discriminator 2)
        main at /home/mcmillan/projects/quant/bin/server.c:246
        /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7ff711250b97]
        _start at ??:?


Packets not recognized by Wireshark

All traffic between client and server is interpreted as normal UDP.
Forcing Wireshark to decode the packets as QUIC, results in various errors.
E.g.:

> Expert Info (Note/Protocol): Unknown QUIC connection. Missing Initial Packet or migrated connection?
> Expert Info (Warning/Decryption): Failed to create decryption context: Decryption (checktag) failed: Checksum error
> Expert Info (Warning/Decryption): Failed to create decryption context: Unable to retrieve cipher information
> Expert Info (Warning/Decryption): Failed to decrypt packet number

Question about 0-RTT

Hi,
I'm playing around with your library for my bachelor thesis and wanted to ask if it is possible to get the server response in the first Handshake during an 0-RTT connection.

At the moment the client is sending the request in the 0-RTT packet. The server is answering this packet with his Handshake packet, containing the ServerHello, Encrypted Extensions and the TLS 1.3 Finished. After this the server sends his Session Ticket and only now it sends the request to the client.
I have read in the IETF draft that it is possible the send the response in the first Handshake packet. So is there a way with your lib to do it?

Thanks for your answer in advance.

SEGV in diet_remove

Here is a trace:

0.030   q_init quic.c:507 quant/socket 0.0.16/9dfd871 with libev/epoll 4.22 ready
        q_init quic.c:508 submit bug reports at https://github.com/NTAP/quant/issues
0.032   q_init quic.c:527 debug build, storing fuzzer corpus data
        q_bind quic.c:362 binding serv socket on port 4443
        init_rec recovery.c:549 in_flight=0 (+0), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1310 serv conn ? on port 4443 created
        new_conn conn.c:1312 serv conn ? state conn_clsd -> conn_idle
        q_bind quic.c:364 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
0.202   rx_pkts conn.c:919 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:0000000000000002
        init_rec recovery.c:549 in_flight=0 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1310 serv conn 0:0000000000000002 on port 4443 created
        new_conn conn.c:1312 serv conn 0:0000000000000002 state conn_clsd -> conn_idle
0.203   log_pkt pkt.c:123 RX from=127.0.0.1:4988 len=1216 0xff=Initial vers=0xff00000f dcid=0000000000000002 scid=000000000000000d tok= len=1207 nr=0
        rx_pkt conn.c:681 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:895 PADDING len=939
        rx_pkt conn.c:706 serv conn 0:0000000000000002 state conn_idle -> conn_opng
        update_act_scid conn.c:504 hshk switch to scid 0:05a80f451f204f98 for serv conn (was 0:0000000000000002)
        on_ch tls.c:306 	SNI = 
        on_ch tls.c:309 	ALPN = 
        chk_tp tls.c:471 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:483 	initial_max_data = 16384
        chk_tp tls.c:500 	idle_timeout = 60
        chk_tp tls.c:478 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:465 	initial_max_stream_data_uni = 8192
0.206   rx_crypto conn.c:584 serv conn 0:05a80f451f204f98 state conn_opng -> conn_estb
        tx conn.c:429 data TX on serv conn 0:05a80f451f204f98 strm -4 w/1 pkt in queue
        enc_pkt pkt.c:395 hshk switch to scid 0:64e89773513219ab for serv conn (was 0:05a80f451f204f98)
        update_act_scid conn.c:504 hshk switch to scid 0:64e89773513219ab for serv conn (was 0:05a80f451f204f98)
0.206   log_pkt pkt.c:176 TX to=127.0.0.1:4988 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab tok=c023c676493da09af03b2f7ec88725bc83ba23347a8136a509d102bea2a4385805a80f451f204f98 len=0 nr=0
        enc_ack_frame frame.c:1171 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1099 PADDING len=97
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:304 in_flight=299 (+299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.200000 sec on serv conn 0:64e89773513219ab
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -2 w/2 pkts in queue
0.206   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab len=0 nr=0
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:304 in_flight=1551 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.200000 sec on serv conn 0:64e89773513219ab
0.206   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab len=0 nr=1
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:304 in_flight=1987 (+436), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.200000 sec on serv conn 0:64e89773513219ab
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.403   on_ld_alarm recovery.c:219 crypto RTX #1 on serv conn 0:64e89773513219ab
        detect_lost_pkts recovery.c:164 pkt 0 considered lost
        detect_lost_pkts recovery.c:203 in_flight=1688 (-299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        detect_lost_pkts recovery.c:164 pkt 0 considered lost
        detect_lost_pkts recovery.c:164 pkt 1 considered lost
        detect_lost_pkts recovery.c:203 in_flight=0 (-1688), cwnd=6000 (-6000), ssthresh=6000 (+6000), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
0.403   log_pkt pkt.c:176 TX to=127.0.0.1:4988 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab tok=c023c676493da09af03b2f7ec88725bc83ba23347a8136a509d102bea2a4385805a80f451f204f98 len=274 nr=1
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=299 (+299), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.400000 sec on serv conn 0:64e89773513219ab
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -2 w/2 pkts in queue
0.403   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab len=1228 nr=2
        enc_padding_frame frame.c:1099 PADDING len=99
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=1551 (+1252), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.400000 sec on serv conn 0:64e89773513219ab
0.403   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab len=412 nr=3
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=1987 (+436), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.400000 sec on serv conn 0:64e89773513219ab
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.439   log_pkt pkt.c:123 RX from=127.0.0.1:4988 len=1216 0xff=Initial vers=0xff00000f dcid=64e89773513219ab scid=000000000000000d tok= len=1207 nr=2
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        on_pkt_acked recovery.c:484 0 was RTX'ed as 1
        detect_lost_pkts recovery.c:203 in_flight=1987 (+0), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.236782 (+0.236782), rttvar=0.118391 (+0.118391)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.437230 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=1181
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 
0.763   log_pkt pkt.c:133 RX from=127.0.0.1:4988 len=114 0xfd=Handshake vers=0xff00000f dcid=64e89773513219ab scid=000000000000000d len=106 nr=0
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=52 [seq]
        dec_ack_frame frame.c:391 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
        detect_lost_pkts recovery.c:203 in_flight=1551 (-436), cwnd=6087 (+87), ssthresh=6000 (+0), srtt=0.252183 (+0.015401), rttvar=0.119595 (+0.001204)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.144376 sec on serv conn 0:64e89773513219ab
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        on_pkt_acked recovery.c:484 0 was RTX'ed as 2
        detect_lost_pkts recovery.c:203 in_flight=1551 (+0), cwnd=6087 (+0), ssthresh=6000 (+0), srtt=0.290715 (+0.038532), rttvar=0.166760 (+0.047165)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.221440 sec on serv conn 0:64e89773513219ab
        dec_ack_frame frame.c:391 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        on_pkt_acked recovery.c:497 stream -2 fully acked
        detect_lost_pkts recovery.c:203 in_flight=299 (-1252), cwnd=6333 (+246), ssthresh=6000 (+0), srtt=0.299374 (+0.008659), rttvar=0.142389 (-0.024371)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.238758 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
0.764   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x35=Short kyph=0 dcid=000000000000000d nr=0
        enc_new_token_frame frame.c:1498 NEW_TOKEN len=40 tok=c023c676493da09af03b2f7ec88725bc83ba23347a8136a509d102bea2a4385805a80f451f204f98
        enc_new_cid_frame frame.c:1477 NEW_CONNECTION_ID seq=1 len=8 cid=1:27c80b323168e3ee tok=2f02a19a3ef8de6f386ec938797adba5
        on_pkt_sent recovery.c:304 in_flight=394 (+95), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.299374 (+0.000000), rttvar=0.142389 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.238758 sec on serv conn 0:64e89773513219ab
0.788   ack_alarm pn.c:56 ACK timer fired on serv conn 0:64e89773513219ab epoch 2
0.788   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=64e89773513219ab len=0 nr=4
        enc_ack_frame frame.c:1171 ACK lg=0 delay=3155 (25240 usec) cnt=0 block=0 [0]
0.849   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=40 0x30=Short kyph=0 dcid=64e89773513219ab nr=0
        new_stream stream.c:101 serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=0/65535 len=7 coff=7/393210 [seq]
        dec_frames frame.c:895 PADDING len=15
        rx conn.c:1065 q_rx_ready(0, 0) done, exiting event loop
        q_rx_ready quic.c:667 serv conn 0:64e89773513219ab ready to rx
        q_read quic.c:312 blocking read on serv conn 0:64e89773513219ab
        q_read quic.c:335 read 7 bytes on serv conn 0:64e89773513219ab strm 4
        serve_cb server.c:110 conn 0:64e89773513219ab str 4 serving URL /5
        q_write quic.c:271 writing 5 bytes in 1 buf on serv conn 0:64e89773513219ab strm 4 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
0.849   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x31=Short kyph=0 dcid=000000000000000d nr=1
        enc_ack_frame frame.c:1171 ACK lg=0 delay=50 (400 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1099 PADDING len=33
        log_stream_or_crypto_frame frame.c:113 STREAM 0x12=LEN id=4/20 off=0/8192 len=5 coff=0/16384 
        on_pkt_sent recovery.c:304 in_flight=463 (+69), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.299374 (+0.000000), rttvar=0.142389 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.152299 sec on serv conn 0:64e89773513219ab
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
1.002   on_ld_alarm recovery.c:219 crypto RTX #1 on serv conn 0:64e89773513219ab
        detect_lost_pkts recovery.c:203 in_flight=463 (+0), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.299374 (+0.000000), rttvar=0.142389 (+0.000000)
        detect_lost_pkts recovery.c:203 in_flight=463 (+0), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.299374 (+0.000000), rttvar=0.142389 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
1.143   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=51 0x30=Short kyph=0 dcid=64e89773513219ab nr=1
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=7/65535 len=8 coff=15/393210 [seq]
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x4bb6 off=16
        dec_rst_stream_frame frame.c:806 serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_open -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        detect_lost_pkts recovery.c:203 in_flight=368 (-95), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.309456 (+0.010082), rttvar=0.126955 (-0.015433)
        on_ld_alarm recovery.c:219 crypto RTX #1 on serv conn 0:64e89773513219ab
        detect_lost_pkts recovery.c:203 in_flight=368 (+0), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.309456 (+0.000000), rttvar=0.126955 (+0.000000)
        detect_lost_pkts recovery.c:203 in_flight=368 (+0), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.309456 (+0.000000), rttvar=0.126955 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
1.144   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x34=Short kyph=0 dcid=000000000000000d nr=2
        enc_ack_frame frame.c:1157 ACK lg=1 delay=0 (0 usec) cnt=0 block=1 [0..1]
1.261   rx_pkts conn.c:953 pkt came from new peer 127.0.0.1:4987, probing
1.261   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=34 0x33=Short kyph=0 dcid=64e89773513219ab nr=5
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xe1e5 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_frames frame.c:895 PADDING len=15
1.287   ack_alarm pn.c:56 ACK timer fired on serv conn 0:64e89773513219ab epoch 3
1.287   log_pkt pkt.c:194 TX to=127.0.0.1:4987 0x32=Short kyph=0 dcid=000000000000000d nr=3
        enc_ack_frame frame.c:1171 ACK lg=5 delay=3174 (25392 usec) cnt=1 block=0 [5]
        enc_ack_frame frame.c:1148 ACK gap=2 block=1 [0..1]
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=a3e5cb68b4f381df
        on_pkt_sent recovery.c:304 in_flight=411 (+43), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.309456 (+0.000000), rttvar=0.126955 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.354035 sec on serv conn 0:64e89773513219ab
1.445   rx_pkts conn.c:953 pkt came from new peer 127.0.0.1:4988, probing
1.445   log_pkt pkt.c:123 RX from=127.0.0.1:4988 len=1216 0xff=Initial vers=0xff00000f dcid=64e89773513219ab scid=000000000000000d tok=46e1ca len=1204 nr=5
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        on_pkt_acked recovery.c:497 stream -4 fully acked
        detect_lost_pkts recovery.c:203 in_flight=112 (-299), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.401055 (+0.091599), rttvar=0.278415 (+0.151460)
        set_ld_timer recovery.c:130 TLP alarm in 0.468120 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=1178
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 (2) 3 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 (4) 
1.446   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x32=Short kyph=0 dcid=000000000000000d nr=4
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=21607ec185ce183f
        on_pkt_sent recovery.c:304 in_flight=147 (+35), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.401055 (+0.000000), rttvar=0.278415 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.626583 sec on serv conn 0:64e89773513219ab
1.656   log_pkt pkt.c:133 RX from=127.0.0.1:4988 len=49 0xfd=Handshake vers=0xff00000f dcid=64e89773513219ab scid=000000000000000d len=41 nr=5
        dec_ack_frame frame.c:391 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
        detect_lost_pkts recovery.c:203 in_flight=147 (+0), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.459428 (+0.058373), rttvar=0.325557 (+0.047142)
        set_ld_timer recovery.c:130 TLP alarm in 0.503124 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 (2) 3 4 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
1.656   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x31=Short kyph=0 dcid=000000000000000d nr=5
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=21607ec185ce183f
        on_pkt_sent recovery.c:304 in_flight=182 (+35), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.459428 (+0.000000), rttvar=0.325557 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.714142 sec on serv conn 0:64e89773513219ab
1.781   rx_pkts conn.c:953 pkt came from new peer 127.0.0.1:4987, probing
1.781   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=34 0x30=Short kyph=0 dcid=64e89773513219ab nr=9
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xb00d off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_frames frame.c:895 PADDING len=15
1.807   ack_alarm pn.c:56 ACK timer fired on serv conn 0:64e89773513219ab epoch 3
1.807   log_pkt pkt.c:194 TX to=127.0.0.1:4987 0x36=Short kyph=0 dcid=000000000000000d nr=6
        enc_ack_frame frame.c:1171 ACK lg=9 delay=3175 (25400 usec) cnt=2 block=0 [9]
        enc_ack_frame frame.c:1164 ACK gap=2 block=0 [5]
        enc_ack_frame frame.c:1148 ACK gap=2 block=1 [0..1]
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=f23755c97ce9c85a
        on_pkt_sent recovery.c:304 in_flight=227 (+45), cwnd=6333 (+0), ssthresh=6000 (+0), srtt=0.459428 (+0.000000), rttvar=0.325557 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.714142 sec on serv conn 0:64e89773513219ab
2.360   rx_pkts conn.c:953 pkt came from new peer 127.0.0.1:4988, probing
2.360   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=73 0x30=Short kyph=0 dcid=64e89773513219ab nr=16
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x0da4 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xdd42 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x0b0c off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xa394 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_path_response_frame frame.c:736 PATH_RESPONSE data=a3e5cb68b4f381df
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x39b2 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
        detect_lost_pkts recovery.c:203 in_flight=192 (-35), cwnd=6339 (+6), ssthresh=6000 (+0), srtt=0.516318 (+0.056890), rttvar=0.357948 (+0.032390)
        set_ld_timer recovery.c:130 TLP alarm in 0.246606 sec on serv conn 0:64e89773513219ab
        dec_ack_frame frame.c:391 ACK lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
        detect_lost_pkts recovery.c:164 pkt 1 considered lost
        detect_lost_pkts recovery.c:203 in_flight=88 (-104), cwnd=6345 (+6), ssthresh=6000 (+0), srtt=0.539719 (+0.023401), rttvar=0.315263 (-0.042684)
        set_ld_timer recovery.c:130 TLP alarm in 0.281708 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
2.360   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x30=Short kyph=0 dcid=000000000000000d nr=7
        enc_ack_frame frame.c:1171 ACK lg=16 delay=0 (0 usec) cnt=3 block=0 [16]
        enc_ack_frame frame.c:1164 ACK gap=5 block=0 [9]
        enc_ack_frame frame.c:1164 ACK gap=2 block=0 [5]
        enc_ack_frame frame.c:1148 ACK gap=2 block=1 [0..1]
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=ed7187b15141073c
        enc_padding_frame frame.c:1099 PADDING len=15
        log_stream_or_crypto_frame frame.c:113 STREAM 0x12=LEN id=4/20 off=0/8192 len=5 coff=5/16384 [RTX] 
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=ed7187b15141073c
        on_pkt_sent recovery.c:304 in_flight=166 (+78), cwnd=6345 (+0), ssthresh=6000 (+0), srtt=0.539719 (+0.000000), rttvar=0.315263 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.834579 sec on serv conn 0:64e89773513219ab
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 (2) 3 6 *7 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
2.361   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x33=Short kyph=0 dcid=000000000000000d nr=8
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=ed7187b15141073c
        on_pkt_sent recovery.c:304 in_flight=201 (+35), cwnd=6345 (+0), ssthresh=6000 (+0), srtt=0.539719 (+0.000000), rttvar=0.315263 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.834579 sec on serv conn 0:64e89773513219ab
2.685   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=34 0x30=Short kyph=0 dcid=64e89773513219ab nr=8
        dec_ack_frame frame.c:391 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
        detect_lost_pkts recovery.c:164 pkt 2 considered lost
        detect_lost_pkts recovery.c:203 in_flight=156 (-45), cwnd=3176 (-3169), ssthresh=3176 (-2824), srtt=0.582058 (+0.042339), rttvar=0.321125 (+0.005862)
        set_ld_timer recovery.c:130 TLP alarm in 0.572529 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 3 *7 8 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
2.686   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x36=Short kyph=0 dcid=000000000000000d nr=9
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=ed7187b15141073c
        on_pkt_sent recovery.c:304 in_flight=191 (+35), cwnd=3176 (+0), ssthresh=3176 (+0), srtt=0.582058 (+0.000000), rttvar=0.321125 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.898087 sec on serv conn 0:64e89773513219ab
3.341   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=71 0x30=Short kyph=0 dcid=64e89773513219ab nr=2
        dec_path_response_frame frame.c:736 PATH_RESPONSE data=f23755c97ce9c85a
        dec_ack_frame frame.c:391 ACK lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
        detect_lost_pkts recovery.c:164 pkt 3 considered lost
        detect_lost_pkts recovery.c:203 in_flight=113 (-78), cwnd=3176 (+0), ssthresh=3176 (+0), srtt=0.631916 (+0.049858), rttvar=0.340559 (+0.019434)
        set_ld_timer recovery.c:130 TLP alarm in 0.317512 sec on serv conn 0:64e89773513219ab
        dec_path_response_frame frame.c:736 PATH_RESPONSE data=21607ec185ce183f
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xd76f off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_path_response_frame frame.c:736 PATH_RESPONSE data=ed7187b15141073c
        dec_ack_frame frame.c:391 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        detect_lost_pkts recovery.c:203 in_flight=113 (+0), cwnd=3176 (+0), ssthresh=3176 (+0), srtt=0.631916 (+0.000000), rttvar=0.340559 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.317512 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 *7 9 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
3.341   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x32=Short kyph=0 dcid=000000000000000d nr=10
        enc_ack_frame frame.c:1171 ACK lg=16 delay=122614 (980912 usec) cnt=2 block=0 [16]
        enc_ack_frame frame.c:1164 ACK gap=6 block=0 [8]
        enc_ack_frame frame.c:1164 ACK gap=4 block=0 [2]
3.659   on_ld_alarm recovery.c:232 TLP alarm #0 on serv conn 0:64e89773513219ab
3.659   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x32=Short kyph=0 dcid=000000000000000d nr=11
        enc_padding_frame frame.c:1099 PADDING len=35
        log_stream_or_crypto_frame frame.c:113 STREAM 0x12=LEN id=4/20 off=0/8192 len=5 coff=5/16384 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=182 (+69), cwnd=3176 (+0), ssthresh=3176 (+0), srtt=0.631916 (+0.000000), rttvar=0.340559 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.972873 sec on serv conn 0:64e89773513219ab
4.236   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=54 0x30=Short kyph=0 dcid=64e89773513219ab nr=6
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xaf29 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=10 delay=0 (0 usec) cnt=0 block=0 [10]
        detect_lost_pkts recovery.c:203 in_flight=182 (+0), cwnd=3176 (+0), ssthresh=3176 (+0), srtt=0.664806 (+0.032891), rttvar=0.321201 (-0.019358)
        set_ld_timer recovery.c:130 TLP alarm in 0.445634 sec on serv conn 0:64e89773513219ab
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x8d60 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=7 delay=0 (0 usec) cnt=0 block=0 [7]
        on_pkt_acked recovery.c:484 7 was RTX'ed as 11
        detect_lost_pkts recovery.c:203 in_flight=104 (-78), cwnd=3176 (+0), ssthresh=3176 (+0), srtt=0.816200 (+0.151394), rttvar=0.543689 (+0.222488)
        set_ld_timer recovery.c:130 TLP alarm in 0.672726 sec on serv conn 0:64e89773513219ab
        dec_ack_frame frame.c:391 ACK lg=9 delay=0 (0 usec) cnt=0 block=0 [9]
        detect_lost_pkts recovery.c:203 in_flight=69 (-35), cwnd=3189 (+13), ssthresh=3176 (+0), srtt=0.907976 (+0.091775), rttvar=0.591317 (+0.047628)
        set_ld_timer recovery.c:130 TLP alarm in 0.810388 sec on serv conn 0:64e89773513219ab
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:64e89773513219ab strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 1/3 unacked: *1 *11 
        log_sent_pkts conn.c:229 epoch 2 unacked: *1 
4.237   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x35=Short kyph=0 dcid=000000000000000d nr=12
        enc_ack_frame frame.c:1171 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
5.046   on_ld_alarm recovery.c:232 TLP alarm #0 on serv conn 0:64e89773513219ab
5.047   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x34=Short kyph=0 dcid=000000000000000d nr=13
        enc_padding_frame frame.c:1099 PADDING len=35
        log_stream_or_crypto_frame frame.c:113 STREAM 0x12=LEN id=4/20 off=0/8192 len=5 coff=5/16384 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=138 (+69), cwnd=3189 (+0), ssthresh=3176 (+0), srtt=0.907976 (+0.000000), rttvar=0.591317 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 1.386963 sec on serv conn 0:64e89773513219ab
5.606   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=54 0x30=Short kyph=0 dcid=64e89773513219ab nr=10
        dec_ack_frame frame.c:391 ACK lg=12 delay=0 (0 usec) cnt=0 block=0 [12]
        detect_lost_pkts recovery.c:203 in_flight=138 (+0), cwnd=3189 (+0), ssthresh=3176 (+0), srtt=0.965783 (+0.057808), rttvar=0.559103 (-0.032214)
        set_ld_timer recovery.c:130 TLP alarm in 0.914155 sec on serv conn 0:64e89773513219ab
        dec_ack_frame frame.c:391 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
        detect_lost_pkts recovery.c:203 in_flight=138 (+0), cwnd=3189 (+0), ssthresh=3176 (+0), srtt=0.965783 (+0.000000), rttvar=0.559103 (+0.000000)
        set_ld_timer recovery.c:130 TLP alarm in 0.914155 sec on serv conn 0:64e89773513219ab
        dec_ack_frame frame.c:391 ACK lg=11 delay=0 (0 usec) cnt=0 block=0 [11]
        on_pkt_acked recovery.c:484 11 was RTX'ed as 13
        detect_lost_pkts recovery.c:203 in_flight=69 (-69), cwnd=3214 (+25), ssthresh=3176 (+0), srtt=1.088437 (+0.122654), rttvar=0.664635 (+0.105531)
        set_ld_timer recovery.c:130 TLP alarm in 1.098135 sec on serv conn 0:64e89773513219ab
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xbce0 off=16
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:64e89773513219ab strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=13 delay=0 (0 usec) cnt=0 block=0 [13]
        on_pkt_acked recovery.c:497 stream 4 fully acked
        on_pkt_acked recovery.c:500 q_write(c, s) done, exiting event loop
/home/mcmillan/projects/quant/lib/src/diet.c:266:26: runtime error: member access within null pointer of type 'struct ival'
ASAN:DEADLYSIGNAL
=================================================================
==27525==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000010 (pc 0x55d75ac5ca9c bp 0x7ffc2d0daf00 sp 0x7ffc2d0daed0 T0)
==27525==The signal is caused by a READ memory access.
==27525==Hint: address points to the zero page.
    #0 0x55d75ac5ca9b in diet_remove /home/mcmillan/projects/quant/lib/src/diet.c:266
    #1 0x55d75ac84918 in track_acked_pkts /home/mcmillan/projects/quant/lib/src/recovery.c:263
    #2 0x55d75ac8d4ea in on_pkt_acked /home/mcmillan/projects/quant/lib/src/recovery.c:516
    #3 0x55d75acde8a6 in dec_ack_frame /home/mcmillan/projects/quant/lib/src/frame.c:441
    #4 0x55d75acec750 in dec_frames /home/mcmillan/projects/quant/lib/src/frame.c:929
    #5 0x55d75ac32e43 in rx_pkt /home/mcmillan/projects/quant/lib/src/conn.c:786
    #6 0x55d75ac44229 in rx_pkts /home/mcmillan/projects/quant/lib/src/conn.c:1009
    #7 0x55d75ac452db in rx /home/mcmillan/projects/quant/lib/src/conn.c:1040
    #8 0x7fe91abcbd72 in ev_invoke_pending (/usr/lib/x86_64-linux-gnu/libev.so.4+0x3d72)
    #9 0x7fe91abcf3dd in ev_run (/usr/lib/x86_64-linux-gnu/libev.so.4+0x73dd)
    #10 0x55d75abf0253 in q_write /home/mcmillan/projects/quant/lib/src/quic.c:286
    #11 0x55d75abdf96b in serve_cb /home/mcmillan/projects/quant/bin/server.c:139
    #12 0x7fe91b7f2e49 in http_parser_execute /home/mcmillan/projects/http-parser/http_parser.c:1075
    #13 0x55d75abe1756 in main /home/mcmillan/projects/quant/bin/server.c:277
    #14 0x7fe9198c2b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #15 0x55d75abdebc9 in _start (/home/mcmillan/projects/quant/Debug/bin/server+0x1aabc9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /home/mcmillan/projects/quant/lib/src/diet.c:266 in diet_remove
==27525==ABORTING



build

Running the cmake build script fails with

cp: /quant/build/external/lib' is not a directory
external/CMakeFiles/picotls.dir/build.make:73: recipe for target 'external/picotls-prefix/src/picotls-stamp/picotls-install' failed

Received Invalid Padding When Connecting to quant.eggert.org

When I try to connect to quant.eggert.org:4433 the server is sending back an improperly formatted packet. The first frame is an ACK frame that correctly ACKs the ClientInitial, but the second frame is PADDING, with only the first part of it being all zeros. I am guessing that it is possible a STREAM frame is getting put somewhere after the PADDING. The full logs for the initial response from https://quant.eggert.org/:

  0.003   w_init warpcore.c:416 eth0 addr 6:d:60:e0:3:ed, MTU 9001, speed 0G, link up
  0.004   w_init warpcore.c:462 eth0 has IP addr 172.30.1.91/255.255.255.0
  0.005   backend_init backend_sock.c:106 backend using epoll, sendmmsg, recvmmsg
  0.005   w_init warpcore.c:477 warpcore/socket 0.13.0 using 1000 2048-byte buffers on eth0
  0.006   q_init quic.c:386 quant 0.0.5 with libev 4.22 ready
  0.006   q_init quic.c:387 submit bug reports at https://github.com/NTAP/quant/issues
  0.006   q_bind quic.c:298 binding serv socket on port 4433
  0.007   w_bind warpcore.c:304 socket bound to port 4433
  0.007   new_conn quic.c:177 embr serv conn created
  0.007   q_bind quic.c:300 bound embr serv socket on port 4433
  0.007   main server.c:88 server waiting on eth0 port 4433
  0.007   q_accept quic.c:312 waiting for accept on embr serv conn
  0.007   q_accept quic.c:313 q_accept(c) entering event loop
  106.972   pkt_nr pkt.c:86 dec 4 bytes from buf[9..12] into uint64_t nr = 2772909138
  106.972   pkt_cid pkt.c:73 dec 8 bytes from buf[1..8] into uint64_t cid = 71325f7f6f2eb9ec
  106.972   verify_hash conn.c:346 dec 8 bytes from buf[1244..1251] into uint64_t hash_rx = 6557e970a19b942e
  106.972   verify_hash conn.c:349 verifying 8-byte hash 6557e970a19b942e in [1244..1251] over [0..1243]
  106.972   rx conn.c:415 conn 71325f7f6f2eb9ec may be new
  106.972   rx conn.c:421 conn 71325f7f6f2eb9ec definitely new
  106.972   rx conn.c:433 embr serv picked new cid 406d341e40695344 for conn 71325f7f6f2eb9ec
  106.972   rx conn.c:460 hex-dumping 1244 bytes of v->buf
  106.972   0x0000:  8271 325f 7f6f 2eb9 eca5 473c 52ff 0000  .q2_.o....G<R...
  106.972   0x0010:  05c1 0000 d416 0301 00cf 0100 00cb 0303  ................
  106.972   0x0020:  59a4 3358 8628 2d28 2828 45d5 2d30 34f1  Y.3X.(-(((E.-04.
  106.972   0x0030:  fdc4 4043 71a3 d83f 945f a4b2 a5e9 9e1e  ..@Cq..?._......
  106.972   0x0040:  0000 0213 0301 0000 a000 2b00 0302 7f15  ..........+.....
  106.972   0x0050:  0028 0026 0024 001d 0020 cc0f 0680 7980  .(.&.$... ....y.
  106.972   0x0060:  8593 4438 38fd bde2 2d7f ebd1 7e64 e4f0  ..D88...-...~d..
  106.972   0x0070:  8f6f 8c26 c054 f6d0 fc3b 0000 0015 0013  .o.&.T...;......
  106.972   0x0080:  0000 1071 7561 6e74 2e65 6767 6572 742e  ...quant.eggert.
  106.972   0x0090:  6f72 6700 1000 0800 0605 6871 2d30 3500  org.......hq-05.
  106.972   0x00a0:  1a00 28ff 0000 05ff 0000 0500 1e00 0000  ..(.............
  106.972   0x00b0:  0400 0100 0000 0100 040f ffff ff00 0200  ................
  106.972   0x00c0:  0400 0000 0a00 0300 0200 1e00 1700 0000  ................
  106.972   0x00d0:  0d00 0e00 0c08 0608 0508 0406 0305 0304  ................
  106.972   0x00e0:  0300 0a00 0400 0200 1d00 0000 0000 0000  ................
  106.972   0x00f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0100:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0110:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0120:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0130:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0140:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0150:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0160:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0170:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0180:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0190:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x01a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x01b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x01c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x01d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x01e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x01f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0200:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0210:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0220:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0230:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0240:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0250:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0260:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0270:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0280:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0290:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x02a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x02b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x02c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x02d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x02e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x02f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0300:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0310:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0320:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0330:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0340:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0350:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0360:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0370:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0380:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0390:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x03a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x03b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x03c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x03d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x03e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x03f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0400:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0410:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0420:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0430:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0440:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0450:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0460:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0470:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0480:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x0490:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x04a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x04b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x04c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  106.972   0x04d0:  0000 0000 0000 0000 0000 0000            ............
  106.984   rx conn.c:475 recv pkt 2772909138 (len 1244, idx 999, type 0x82 = 1000:0010) on embr serv conn 406d341e40695344 from 131.107.147.216:49698
  106.984   new_stream stream.c:68 reserved str 0 on embr serv conn 406d341e40695344
  106.984   pkt_vers pkt.c:96 dec 4 bytes from buf[13..16] into uint32_t vers = 0xff000005
  106.984   rx conn.c:498 supporting client-requested version 0xff000005
  106.984   dec_stream_frame frame.c:93 dec 1 byte from v->buf[17..17] into uint8_t type = 0xc1 (1100:0001)
  106.984   dec_stream_frame frame.c:97 dec 1 byte from v->buf[18..18] into uint32_t sid = 0 (0000:0000)
  106.984   dec_stream_frame frame.c:107 dec 2 bytes from v->buf[19..20] into uint16_t *len = 212
  106.984   dec_stream_frame frame.c:134 212 bytes new data (off 0-212) on embr serv conn 406d341e40695344 str 0: ๏ฟฝ๏ฟฝ๏ฟฝ
  107.004   tls_handshake conn.c:151 TLS handshake: recv 212, gen 685, in_len 212, ret 0: ๏ฟฝ๏ฟฝ๏ฟฝ
  107.004   conn_setup_1rtt conn.c:133 embr serv conn 406d341e40695344 now in state 3
  107.004   rx conn.c:507 embr serv conn 406d341e40695344 now in state 3
  107.004   tx conn.c:320 data TX needed on embr serv conn 406d341e40695344 str 0
  107.004   enc_pkt pkt.c:141 embr serv conn state 3
  107.004   enc_pkt pkt.c:171 enc uint8_t flags = 0x84 (1000:0100) into 1 byte at v->buf[0..0]
  107.004   enc_pkt pkt.c:174 enc uint64_t c->id = 406d341e40695344 into 8 bytes at v->buf[1..8]
  107.004   enc_pkt pkt.c:178 enc uint32_t nr = 8000 into 4 bytes at v->buf[9..12]
  107.004   enc_pkt pkt.c:179 enc uint32_t c->vers = 0xff000005 into 4 bytes at v->buf[13..16]
  107.004   enc_ack_frame frame.c:494 enc uint8_t type = 0xa8 (1010:1000) into 1 byte at buf[17..17]
  107.004   enc_ack_frame frame.c:501 enc uint8_t num_ts = 0 (0000:0000) into 1 byte at buf[18..18]
  107.004   enc_ack_frame frame.c:503 enc uint64_t lg_recv = 2772909138 into 4 bytes at buf[19..22]
  107.004   enc_ack_frame frame.c:506 enc uint16_t ack_delay = 0 into 2 bytes at buf[23..24]
  107.004   enc_ack_frame frame.c:518 ACKing 2772909138-2772909138
  107.004   enc_ack_frame frame.c:519 enc uint64_t ack_block = 0 (0000:0000) into 1 byte at buf[25..25]
  107.004   enc_padding_frame frame.c:435 encoding padding frame into [26..63]
  107.004   enc_stream_frame frame.c:565 685 bytes at off 0-685 on str 0: ๏ฟฝ๏ฟฝ๏ฟฝ
  107.004   enc_stream_frame frame.c:591 enc uint8_t type = 0xc1 (1100:0001) into 1 byte at v->buf[60..60]
  107.004   enc_stream_frame frame.c:592 enc uint32_t s->id = 0 (0000:0000) into 1 byte at v->buf[61..61]
  107.004   enc_stream_frame frame.c:596 enc uint16_t dlen = 685 into 2 bytes at v->buf[62..63]
  107.004   enc_pkt pkt.c:247 hex-dumping 749 bytes of v->buf
  107.004   0x0000:  8440 6d34 1e40 6953 4400 001f 40ff 0000  .@m4.@iSD...@...
  107.004   0x0010:  05a8 00a5 473c 5200 0000 0000 0000 0000  ....G<R.........
  107.004   0x0020:  0000 0000 0000 0000 0000 0000 0000 0000  ................
  107.004   0x0030:  0000 0000 0000 0000 0000 0000 c100 02ad  ................
  107.004   0x0040:  1603 0100 5202 0000 4e7f 1549 518b 79d7  ....R...N..IQ.y.
  107.004   0x0050:  1d22 6a7d baac 9e38 4771 9c4d 25a9 8bfd  ."j}...8Gq.M%...
  107.004   0x0060:  c94c 83db d8b0 8464 230c c613 0300 2800  .L.....d#.....(.
  107.004   0x0070:  2800 2400 1d00 20da c467 fe45 92ac 81a4  (.$... ..g.E....
  107.004   0x0080:  b375 e371 9cff 2ea4 e6fe 8a2e be7e c9c5  .u.q.........~..
  107.004   0x0090:  e9ce 8974 1e64 5817 0301 001b 7da5 7574  ...t.dX.....}.ut
  107.004   0x00a0:  491f 0a44 83d6 53dc aa34 60b1 c06c b245  I..D..S..4`..l.E
  107.004   0x00b0:  0af9 bc9c 3341 ba17 0301 0192 b25d 3b1b  ....3A.......];.
  107.004   0x00c0:  f8a1 ea69 00f7 7eac e762 f9b7 52f1 6eec  ...i..~..b..R.n.
  107.004   0x00d0:  cd3f 71e4 8070 a036 2bd5 2e73 7ec0 18c0  .?q..p.6+..s~...
  107.004   0x00e0:  bf76 1ae2 ab20 39a4 08a5 1f04 0f53 0462  .v... 9......S.b
  107.004   0x00f0:  3660 d1fe 6e0e 5e8b fb3b bddc ca0c b475  6`..n.^..;.....u
  107.004   0x0100:  93c1 d696 b757 234e 7c85 260a 9608 c9e6  .....W#N|.&.....
  107.004   0x0110:  be12 1fa9 e881 8136 83d1 756d 46f3 faf2  .......6..umF...
  107.004   0x0120:  20c6 9e3c 9dae c745 edc4 79b7 1558 511e   ..<...E..y..XQ.
  107.004   0x0130:  7664 9ce7 4851 4704 19cd ff5c 8cc6 d0bf  vd..HQG....\....
  107.004   0x0140:  799d d63e 309d 3709 c3d4 5fa1 fae9 008f  y..>0.7..._.....
  107.004   0x0150:  4908 8681 4bca 8327 cf89 4117 81c0 ac24  I...K..'..A....$
  107.004   0x0160:  8521 9d4b fc07 5ece b917 5058 201b ac04  .!.K..^...PX ...
  107.004   0x0170:  7ffc ac22 bdd3 99b4 90e9 dae6 f9c1 1abe  ..."............
  107.004   0x0180:  8b27 00ab a35b 87d8 8f49 95fa 10f5 b33d  .'...[...I.....=
  107.004   0x0190:  06d8 d800 a6c5 364d 10d0 bdb7 c5a1 8861  ......6M.......a
  107.004   0x01a0:  330d c287 eca0 80b4 8a8d a0f2 98ac 19fd  3...............
  107.004   0x01b0:  38ad 9e49 c418 3ea8 9514 f80d 71c6 cfc2  8..I..>.....q...
  107.004   0x01c0:  5bb0 0a9b 952c aae8 608b 8127 acda d839  [....,..`..'...9
  107.004   0x01d0:  c6e7 df48 b5c7 dff6 bcef 2d8f b973 ce1e  ...H......-..s..
  107.004   0x01e0:  7f8b 5300 9328 4c38 b885 b6b1 bf33 59a1  ..S..(L8.....3Y.
  107.004   0x01f0:  5997 c345 068f bb81 3174 d4e4 1cef f6f5  Y..E....1t......
  107.004   0x0200:  185e 4dd0 98bd 37bb 7e05 fd11 0b13 9403  .^M...7.~.......
  107.004   0x0210:  36fc a586 3f44 b8d3 b040 edc4 a6bf 2619  6...?D...@....&.
  107.004   0x0220:  3878 083d df31 c653 38a6 00b6 96f2 d805  8x.=.1.S8.......
  107.004   0x0230:  984e 5997 048f 2e7d e54e ec9e 8aca 39ad  .NY....}.N....9.
  107.004   0x0240:  e034 b004 97c1 b252 28ec 142c 4025 1703  .4.....R(..,@%..
  107.004   0x0250:  0100 604c a9d0 8daf f43d b276 90c0 1b84  ..`L.....=.v....
  107.004   0x0260:  bf49 a0d8 7b5d 5fbd e1b0 e678 195f cd55  .I..{]_....x._.U
  107.004   0x0270:  5009 ab64 9803 7f90 e614 46ae ce91 ac36  P..d......F....6
  107.004   0x0280:  1904 308e fcb7 4a9b a15a 94e6 5c92 b9a9  ..0...J..Z..\...
  107.004   0x0290:  97a1 7c0a 94d7 a499 5df1 e6de 2085 a432  ..|.....]... ..2
  107.004   0x02a0:  92b9 8f44 8e24 cf6c d5b2 62ae 5458 dfbd  ...D.$.l..b.TX..
  107.004   0x02b0:  b5b9 0317 0301 0035 11ca 764a 841b 686c  .......5..vJ..hl
  107.004   0x02c0:  e0fd bc5e 86e3 1753 79a6 c0c3 b3ec 7b1c  ...^...Sy.....{.
  107.004   0x02d0:  39f0 9f43 3f8f ccbd 59b0 0024 4fdf 1632  9..C?...Y..$O..2
  107.004   0x02e0:  4fde 1bd9 20eb 2ecb 4435 c7c1 94         O... ...D5...
  107.011   enc_pkt pkt.c:261 adding 8-byte hash 38752efdc703cacf over [0..748] into [749..756]
  107.011   enc_pkt pkt.c:263 enc uint64_t hash = 38752efdc703cacf into 8 bytes at x->buf[749..756]
  107.011   enc_pkt pkt.c:279 in_flight +757 = 757

Issue in building quant

Hi,

I'm trying to build the quant on Fedora. After running 'make' command, I'm facing the following issue.
Please guide me in this.
I already have all the header files of openssl but somehow it's unable to link them to quant/picotls.

-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/quant/Debug/external/picotls-prefix/src/picotls-build
[ 1%] Linking C executable test-openssl.t
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function sk_X509_num': /usr/local/include/openssl/x509.h:99: undefined reference to OPENSSL_sk_num'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function sk_X509_value': /usr/local/include/openssl/x509.h:99: undefined reference to OPENSSL_sk_value'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function sk_X509_free': /usr/local/include/openssl/x509.h:99: undefined reference to OPENSSL_sk_free'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function do_sign': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:333: undefined reference to EVP_MD_CTX_new'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:342: undefined reference to RSA_pkey_ctx_ctrl' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:346: undefined reference to RSA_pkey_ctx_ctrl'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:350: undefined reference to RSA_pkey_ctx_ctrl' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:374: undefined reference to EVP_MD_CTX_free'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function aead_chacha20poly1305_setup_crypto': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:518: undefined reference to EVP_chacha20_poly1305'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function verify_sign': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:619: undefined reference to EVP_MD_CTX_new'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:628: undefined reference to RSA_pkey_ctx_ctrl' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:632: undefined reference to RSA_pkey_ctx_ctrl'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:636: undefined reference to RSA_pkey_ctx_ctrl' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:653: undefined reference to EVP_MD_CTX_free'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function ptls_openssl_init_sign_certificate': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:705: undefined reference to EVP_PKEY_up_ref'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function ptls_openssl_init_verify_certificate': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:846: undefined reference to X509_STORE_up_ref'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function ptls_openssl_encrypt_ticket': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:885: undefined reference to HMAC_CTX_new'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:919: undefined reference to HMAC_size' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:927: undefined reference to EVP_CIPHER_CTX_reset'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:929: undefined reference to HMAC_CTX_free' CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function ptls_openssl_decrypt_ticket':
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:944: undefined reference to HMAC_CTX_new' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:961: undefined reference to HMAC_size'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:997: undefined reference to EVP_CIPHER_CTX_reset' /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/../lib/openssl.c:999: undefined reference to HMAC_CTX_free'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function test_rsa_sign': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/openssl.c:100: undefined reference to EVP_PKEY_up_ref'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function test_ecdsa_sign': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/openssl.c:124: undefined reference to EVP_PKEY_up_ref'
CMakeFiles/test-openssl.t.dir/t/openssl.c.o: In function main': /usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/openssl.c:161: undefined reference to OPENSSL_init_crypto'
/usr/src/quant/Debug/external/picotls-prefix/src/picotls/t/openssl.c:162: undefined reference to `OPENSSL_init_crypto'
collect2: error: ld returned 1 exit status
CMakeFiles/test-openssl.t.dir/build.make:590: recipe for target 'test-openssl.t' failed
make[5]: *** [test-openssl.t] Error 1
CMakeFiles/Makefile2:100: recipe for target 'CMakeFiles/test-openssl.t.dir/all' failed
make[4]: *** [CMakeFiles/test-openssl.t.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make[3]: *** [all] Error 2
external/CMakeFiles/picotls.dir/build.make:110: recipe for target 'external/picotls-prefix/src/picotls-stamp/picotls-build' failed
make[2]: *** [external/picotls-prefix/src/picotls-stamp/picotls-build] Error 2
CMakeFiles/Makefile2:309: recipe for target 'external/CMakeFiles/picotls.dir/all' failed
make[1]: *** [external/CMakeFiles/picotls.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Thanks,
Pallavi

build error

Cannot find function w_get_sock

Scanning dependencies of target picotls
[ 4%] Creating directories for 'picotls'
[ 4%] Performing download step (git clone) for 'picotls'
Cloning into 'picotls'...
Note: checking out 'd94a67d4d9733fa7b72c331d238c6160298d39b3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b

HEAD is now at d94a67d... add missing C++ guards
Submodule 'deps/picotest' (https://github.com/h2o/picotest.git) registered for path 'deps/picotest'
Cloning into 'deps/picotest'...
Submodule path 'deps/picotest': checked out 'f390562fd4d6919807441721ec05b08f6d8c8d9c'
[ 8%] No patch step for 'picotls'
[ 12%] Performing update step for 'picotls'
[ 16%] Performing configure step for 'picotls'
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'libbrotlidec'
-- No package 'libbrotlidec' found
-- Checking for module 'libbrotlienc'
-- No package 'libbrotlienc' found
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.2g")
CMake Warning at CMakeLists.txt:48 (MESSAGE):
Enabling OpenSSL support

-- Configuring done
-- Generating done
-- Build files have been written to: /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls-build
[ 20%] Performing build step for 'picotls'
Scanning dependencies of target test-openssl.t
[ 1%] Building C object CMakeFiles/test-openssl.t.dir/deps/micro-ecc/uECC.c.o
[ 2%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/aes.c.o
[ 4%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/blockwise.c.o
[ 5%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/chacha20.c.o
[ 7%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/chash.c.o
[ 8%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/curve25519.c.o
[ 10%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/drbg.c.o
[ 11%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/hmac.c.o
[ 13%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/gcm.c.o
[ 14%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/gf128.c.o
[ 15%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/modes.c.o
[ 17%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/poly1305.c.o
[ 18%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/sha256.c.o
[ 20%] Building C object CMakeFiles/test-openssl.t.dir/deps/cifra/src/sha512.c.o
[ 21%] Building C object CMakeFiles/test-openssl.t.dir/lib/cifra.c.o
[ 23%] Building C object CMakeFiles/test-openssl.t.dir/lib/uecc.c.o
[ 24%] Building C object CMakeFiles/test-openssl.t.dir/lib/asn1.c.o
[ 26%] Building C object CMakeFiles/test-openssl.t.dir/lib/pembase64.c.o
[ 27%] Building C object CMakeFiles/test-openssl.t.dir/deps/picotest/picotest.c.o
[ 28%] Building C object CMakeFiles/test-openssl.t.dir/t/picotls.c.o
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:28:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/picotls.c: In function โ€˜send_client_helloโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/include/picotls.h:690:12: warning: โ€˜resumption_ticketโ€™ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((ret = ptls_buffer__do_pushv((buf), (src), (len))) != 0)
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:32:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/picotls.c:1408:46: note: โ€˜resumption_ticketโ€™ was declared here
ptls_iovec_t resumption_secret = {NULL}, resumption_ticket;
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:28:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/include/picotls.h:690:12: warning: โ€˜*((void )&resumption_ticket+8)โ€™ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((ret = ptls_buffer__do_pushv((buf), (src), (len))) != 0)
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:32:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/picotls.c:1408:46: note: โ€˜
((void )&resumption_ticket+8)โ€™ was declared here
ptls_iovec_t resumption_secret = {NULL}, resumption_ticket;
^
[ 30%] Building C object CMakeFiles/test-openssl.t.dir/t/openssl.c.o
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/openssl.c:34:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c: In function โ€˜cipher_do_initโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c:616:9: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c: In function โ€˜cipher_encryptโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c:643:26: warning: unused variable โ€˜retโ€™ [-Wunused-variable]
int len = (int)_len, ret = EVP_EncryptUpdate(ctx->evp, output, &len, input, len);
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c: In function โ€˜aead_do_encrypt_initโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c:682:9: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c: In function โ€˜aead_do_encrypt_updateโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c:698:19: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int blocklen, ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c: In function โ€˜aead_do_encrypt_finalโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c:711:19: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int blocklen, ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c: In function โ€˜aead_do_decryptโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/openssl.c:729:19: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int blocklen, ret;
^
[ 31%] Linking C executable test-openssl.t
[ 31%] Built target test-openssl.t
Scanning dependencies of target picotls-core
[ 33%] Building C object CMakeFiles/picotls-core.dir/lib/picotls.c.o
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/picotls.c:33:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/picotls.c: In function โ€˜send_client_helloโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/include/picotls.h:690:12: warning: โ€˜resumption_ticketโ€™ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((ret = ptls_buffer__do_pushv((buf), (src), (len))) != 0)
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/picotls.c:1408:46: note: โ€˜resumption_ticketโ€™ was declared here
ptls_iovec_t resumption_secret = {NULL}, resumption_ticket;
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/picotls.c:33:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/include/picotls.h:690:12: warning: โ€˜
((void )&resumption_ticket+8)โ€™ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((ret = ptls_buffer__do_pushv((buf), (src), (len))) != 0)
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/picotls.c:1408:46: note: โ€˜
((void )&resumption_ticket+8)โ€™ was declared here
ptls_iovec_t resumption_secret = {NULL}, resumption_ticket;
^
[ 34%] Building C object CMakeFiles/picotls-core.dir/lib/pembase64.c.o
[ 36%] Linking C static library libpicotls-core.a
[ 36%] Built target picotls-core
Scanning dependencies of target picotls-openssl
[ 37%] Building C object CMakeFiles/picotls-openssl.dir/lib/openssl.c.o
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c: In function โ€˜cipher_do_initโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c:616:9: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c: In function โ€˜cipher_encryptโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c:643:26: warning: unused variable โ€˜retโ€™ [-Wunused-variable]
int len = (int)_len, ret = EVP_EncryptUpdate(ctx->evp, output, &len, input, len);
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c: In function โ€˜aead_do_encrypt_initโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c:682:9: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c: In function โ€˜aead_do_encrypt_updateโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c:698:19: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int blocklen, ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c: In function โ€˜aead_do_encrypt_finalโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c:711:19: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int blocklen, ret;
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c: In function โ€˜aead_do_decryptโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/lib/openssl.c:729:19: warning: variable โ€˜retโ€™ set but not used [-Wunused-but-set-variable]
int blocklen, ret;
^
[ 39%] Linking C static library libpicotls-openssl.a
[ 39%] Built target picotls-openssl
Scanning dependencies of target cli
[ 40%] Building C object CMakeFiles/cli.dir/t/cli.c.o
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/cli.c: In function โ€˜handle_connectionโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/cli.c:153:29: warning: ignoring return value of โ€˜writeโ€™, declared with attribute warn_unused_result [-Wunused-result]
(void)write(sockfd, encbuf.base, encbuf.off);
^
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/cli.c:160:29: warning: ignoring return value of โ€˜writeโ€™, declared with attribute warn_unused_result [-Wunused-result]
write(1, rbuf.base, rbuf.off);
^
[ 42%] Building C object CMakeFiles/cli.dir/lib/pembase64.c.o
[ 43%] Linking C executable cli
[ 43%] Built target cli
Scanning dependencies of target picotls-minicrypto
[ 44%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/micro-ecc/uECC.c.o
[ 46%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/aes.c.o
[ 47%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/blockwise.c.o
[ 49%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/chacha20.c.o
[ 50%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/chash.c.o
[ 52%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/curve25519.c.o
[ 53%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/drbg.c.o
[ 55%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/hmac.c.o
[ 56%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/gcm.c.o
[ 57%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/gf128.c.o
[ 59%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/modes.c.o
[ 60%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/poly1305.c.o
[ 62%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/sha256.c.o
[ 63%] Building C object CMakeFiles/picotls-minicrypto.dir/deps/cifra/src/sha512.c.o
[ 65%] Building C object CMakeFiles/picotls-minicrypto.dir/lib/cifra.c.o
[ 66%] Building C object CMakeFiles/picotls-minicrypto.dir/lib/minicrypto-pem.c.o
[ 68%] Building C object CMakeFiles/picotls-minicrypto.dir/lib/uecc.c.o
[ 69%] Building C object CMakeFiles/picotls-minicrypto.dir/lib/asn1.c.o
[ 71%] Linking C static library libpicotls-minicrypto.a
[ 71%] Built target picotls-minicrypto
Scanning dependencies of target test-minicrypto.t
[ 72%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/micro-ecc/uECC.c.o
[ 73%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/aes.c.o
[ 75%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/blockwise.c.o
[ 76%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/chacha20.c.o
[ 78%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/chash.c.o
[ 79%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/curve25519.c.o
[ 81%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/drbg.c.o
[ 82%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/hmac.c.o
[ 84%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/gcm.c.o
[ 85%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/gf128.c.o
[ 86%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/modes.c.o
[ 88%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/poly1305.c.o
[ 89%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/sha256.c.o
[ 91%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/cifra/src/sha512.c.o
[ 92%] Building C object CMakeFiles/test-minicrypto.t.dir/deps/picotest/picotest.c.o
[ 94%] Building C object CMakeFiles/test-minicrypto.t.dir/t/picotls.c.o
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:28:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/picotls.c: In function โ€˜send_client_helloโ€™:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/include/picotls.h:690:12: warning: โ€˜resumption_ticketโ€™ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((ret = ptls_buffer__do_pushv((buf), (src), (len))) != 0)
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:32:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/picotls.c:1408:46: note: โ€˜resumption_ticketโ€™ was declared here
ptls_iovec_t resumption_secret = {NULL}, resumption_ticket;
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:28:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/include/picotls.h:690:12: warning: โ€˜
((void )&resumption_ticket+8)โ€™ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((ret = ptls_buffer__do_pushv((buf), (src), (len))) != 0)
^
In file included from /home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/picotls.c:32:0:
/home/peter/Downloads/quant/build/external/picotls-prefix/src/picotls/t/../lib/picotls.c:1408:46: note: โ€˜
((void *)&resumption_ticket+8)โ€™ was declared here
ptls_iovec_t resumption_secret = {NULL}, resumption_ticket;
^
[ 95%] Building C object CMakeFiles/test-minicrypto.t.dir/t/minicrypto.c.o
[ 97%] Building C object CMakeFiles/test-minicrypto.t.dir/lib/asn1.c.o
[ 98%] Building C object CMakeFiles/test-minicrypto.t.dir/lib/pembase64.c.o
[100%] Linking C executable test-minicrypto.t
[100%] Built target test-minicrypto.t
[ 24%] Performing install step for 'picotls'
[ 28%] Completed 'picotls'
[ 28%] Built target picotls
Scanning dependencies of target common
[ 32%] Building C object lib/CMakeFiles/common.dir/src/pkt.c.o
[ 36%] Building C object lib/CMakeFiles/common.dir/src/frame.c.o
[ 40%] Building C object lib/CMakeFiles/common.dir/src/quic.c.o
[ 40%] Building C object lib/CMakeFiles/common.dir/src/stream.c.o
[ 44%] Building C object lib/CMakeFiles/common.dir/src/conn.c.o
/home/peter/Downloads/quant/lib/src/conn.c: In function โ€˜new_connโ€™:
/home/peter/Downloads/quant/lib/src/conn.c:1342:15: error: implicit declaration of function โ€˜w_get_sockโ€™ [-Werror=implicit-function-declaration]
c->sock = w_get_sock(w, htons(port), 0);
^
/home/peter/Downloads/quant/lib/src/conn.c:1342:13: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
c->sock = w_get_sock(w, htons(port), 0);
^
/home/peter/Downloads/quant/lib/src/conn.c: At top level:
cc1: error: unrecognized command line option โ€˜-Wno-disabled-macro-expansionโ€™ [-Werror]
cc1: error: unrecognized command line option โ€˜-Wno-redundant-parensโ€™ [-Werror]
cc1: error: unrecognized command line option โ€˜-Wno-extended-offsetofโ€™ [-Werror]
cc1: error: unrecognized command line option โ€˜-Wno-gnu-statement-expressionโ€™ [-Werror]
cc1: all warnings being treated as errors
lib/CMakeFiles/common.dir/build.make:114: recipe for target 'lib/CMakeFiles/common.dir/src/conn.c.o' failed
make[2]: *** [lib/CMakeFiles/common.dir/src/conn.c.o] Error 1
CMakeFiles/Makefile2:768: recipe for target 'lib/CMakeFiles/common.dir/all' failed
make[1]: *** [lib/CMakeFiles/common.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
peter@pf-ubuntu-dev:~/Downloads/quant/build$

set_ld_alarm recovery.c:118 ABORT: assertion failed

This assertion failure occurs while the server is transmitting a PATH_CHALLENGE frame and seems to be related to a negative alarm value. The server log follows:

0.033   q_init quic.c:498 quant/socket 0.0.16/dd567715 with libev 4.22 ready
       q_init quic.c:499 submit bug reports at https://github.com/NTAP/quant/issues
0.035   q_init quic.c:521 debug build, storing fuzzer corpus data
       q_bind quic.c:368 binding serv socket on port 4443
       init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       new_conn conn.c:1265 serv conn ? on port 4443 created
       new_conn conn.c:1267 conn ? state conn_clsd -> conn_idle
       q_bind quic.c:370 bound serv socket on port 4443
       main server.c:239 server waiting on lo port 4443
0.192   rx_pkts conn.c:885 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:000000000000000b
       init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       new_conn conn.c:1265 serv conn 0:000000000000000b on port 4443 created
       new_conn conn.c:1267 conn 0:000000000000000b state conn_clsd -> conn_idle
0.192   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok=4ee8 len=1205 nr=0
       rx_pkt conn.c:642 supporting clnt-requested vers 0xff00000f
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=243 [seq]
       dec_frames frame.c:891 PADDING len=937
       rx_pkt conn.c:668 conn 0:000000000000000b state conn_idle -> conn_opng
       update_act_scid conn.c:465 hshk switch to scid 0:04cd8fb76a59adae for serv conn (was 0:000000000000000b)
       on_ch tls.c:310 	SNI = 
       on_ch tls.c:313 	ALPN = 
       chk_tp tls.c:473 	initial_max_stream_data_bidi_local = 8192
       chk_tp tls.c:485 	initial_max_data = 16384
       chk_tp tls.c:502 	idle_timeout = 60
       chk_tp tls.c:480 	initial_max_stream_data_bidi_remote = 8192
       chk_tp tls.c:467 	initial_max_stream_data_uni = 8192
0.195   rx_crypto conn.c:545 conn 0:04cd8fb76a59adae state conn_opng -> conn_estb
       tx conn.c:420 data TX on serv conn 0:04cd8fb76a59adae strm -4 w/1 pkt in queue
       enc_pkt pkt.c:386 hshk switch to scid 0:3c012818b680a82b for serv conn (was 0:04cd8fb76a59adae)
       update_act_scid conn.c:465 hshk switch to scid 0:3c012818b680a82b for serv conn (was 0:04cd8fb76a59adae)
0.195   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b tok=bf348eecec5f26df5f7b0ce3be9b531bc91f9d05fd88184d57508ecdbd16f1ae04cd8fb76a59adae len=0 nr=0
       enc_ack_frame frame.c:1167 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
       enc_padding_frame frame.c:1095 PADDING len=97
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 
       on_pkt_sent recovery.c:285 in_flight=299, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -2 w/2 pkts in queue
0.195   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=0 nr=0
       enc_padding_frame frame.c:1095 PADDING len=103
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 
       on_pkt_sent recovery.c:285 in_flight=1551, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
0.195   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=0 nr=1
       enc_padding_frame frame.c:1095 PADDING len=103
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 
       on_pkt_sent recovery.c:285 in_flight=1987, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 
       log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
       coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
0.392   on_ld_alarm recovery.c:201 handshake RTX #1 on serv conn 0:3c012818b680a82b
       detect_lost_pkts recovery.c:155 pkt 0 considered lost
       detect_lost_pkts recovery.c:162 in_flight=1688, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       detect_lost_pkts recovery.c:155 pkt 0 considered lost
       detect_lost_pkts recovery.c:162 in_flight=436, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       detect_lost_pkts recovery.c:155 pkt 1 considered lost
       detect_lost_pkts recovery.c:162 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
       detect_lost_pkts recovery.c:185 in_flight=0, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -4 w/1 pkt in queue
0.392   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b tok=bf348eecec5f26df5f7b0ce3be9b531bc91f9d05fd88184d57508ecdbd16f1ae04cd8fb76a59adae len=274 nr=1
       enc_ack_frame frame.c:1167 ACK lg=0 delay=25065 (200520 usec) cnt=0 block=0 [0]
       enc_padding_frame frame.c:1095 PADDING len=90
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=299, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
       log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -2 w/2 pkts in queue
0.392   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=1228 nr=2
       enc_padding_frame frame.c:1095 PADDING len=99
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=1551, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
0.393   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=412 nr=3
       enc_padding_frame frame.c:1095 PADDING len=98
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
       log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
       coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
0.619   log_pkt pkt.c:126 RX len=114 0xfd=Handshake vers=0xff00000f dcid=3c012818b680a82b scid=000000000000000d len=106 nr=0
       dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
       update_rtt recovery.c:319 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.427779, rttvar=0.213889
       on_pkt_acked recovery.c:461 1 was RTX'ed as 3
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=52 [seq]
       dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
       update_rtt recovery.c:319 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.427779, rttvar=0.160417
       on_pkt_acked recovery.c:461 0 was RTX'ed as 2
       dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
       update_rtt recovery.c:319 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.402714, rttvar=0.170443
       dec_frames frame.c:891 PADDING len=15
0.645   ack_alarm pn.c:56 ACK timer fired on serv conn 0:3c012818b680a82b epoch 2
0.645   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=0 nr=4
       enc_ack_frame frame.c:1167 ACK lg=0 delay=3207 (25656 usec) cnt=0 block=0 [0]
0.754   log_pkt pkt.c:134 RX len=40 0x30=Short kyph=0 dcid=3c012818b680a82b nr=0
       new_stream stream.c:101 conn 0:3c012818b680a82b strm 4 (bidir, clnt) state strm_idle -> strm_open
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=0/16384 len=7 coff=7/32768 [seq]
       dec_frames frame.c:891 PADDING len=15
       rx conn.c:1023 q_rx_ready(0, 0) done, exiting event loop
       q_rx_ready quic.c:657 serv conn 0:3c012818b680a82b ready to rx
       q_read quic.c:318 blocking read on serv conn 0:3c012818b680a82b
       q_read quic.c:342 read 7 bytes on serv conn 0:3c012818b680a82b strm 4
       serve_cb server.c:110 conn 0:3c012818b680a82b str 4 serving URL /5
       q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:3c012818b680a82b strm 4 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -4 w/1 pkt in queue
0.754   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b tok=bf348eecec5f26df5f7b0ce3be9b531bc91f9d05fd88184d57508ecdbd16f1ae04cd8fb76a59adae len=274 nr=2
       enc_ack_frame frame.c:1167 ACK lg=0 delay=70362 (562896 usec) cnt=0 block=0 [0]
       enc_padding_frame frame.c:1095 PADDING len=90
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=2286, cwnd=6087, ssthresh=6000, srtt=0.402714, rttvar=0.170443
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 (4) 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -2 w/2 pkts in queue
0.755   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=1228 nr=5
       enc_ack_frame frame.c:1167 ACK lg=0 delay=16890 (135120 usec) cnt=0 block=0 [0]
       enc_padding_frame frame.c:1095 PADDING len=91
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=3538, cwnd=6087, ssthresh=6000, srtt=0.402714, rttvar=0.170443
       tx_stream_data conn.c:280 skip ACK'ed pkt 3
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 (4) *5 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm 4 w/1 pkt in queue
0.755   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=0
       enc_ack_frame frame.c:1167 ACK lg=0 delay=55 (440 usec) cnt=0 block=0 [0]
       enc_max_stream_id_frame frame.c:1347 MAX_STREAM_ID max=8
       enc_padding_frame frame.c:1095 PADDING len=31
       log_stream_or_crypto_frame frame.c:111 STREAM 0x12=LEN id=4/8 off=0/8192 len=5 coff=0/16384 
       enc_new_token_frame frame.c:1494 NEW_TOKEN len=40 tok=bf348eecec5f26df5f7b0ce3be9b531bc91f9d05fd88184d57508ecdbd16f1ae04cd8fb76a59adae
       enc_new_cid_frame frame.c:1473 NEW_CONNECTION_ID seq=1 len=8 cid=1:5310291471b44668 tok=fdf68877df28eb61a1f8cec7fddf6b45
       on_pkt_sent recovery.c:285 in_flight=3676, cwnd=6087, ssthresh=6000, srtt=0.402714, rttvar=0.170443
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
       log_sent_pkts conn.c:227 epoch 1/3 unacked: *0 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 (4) *5 
1.102   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
1.102   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=3c012818b680a82b nr=2
       dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
       update_rtt recovery.c:319 in_flight=3676, cwnd=6087, ssthresh=6000, srtt=0.395858, rttvar=0.141544
       on_pkt_acked recovery.c:474 stream 4 fully acked
       on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
       dec_frames frame.c:891 PADDING len=15
       q_write quic.c:302 wrote 5 bytes on serv conn 0:3c012818b680a82b strm 4 
       q_read quic.c:318 blocking read on serv conn 0:3c012818b680a82b
       q_read quic.c:331 waiting for data on any stream on serv conn 0:3c012818b680a82b
1.334   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
1.334   log_pkt pkt.c:134 RX len=62 0x30=Short kyph=0 dcid=3c012818b680a82b nr=6
       dec_stream_or_crypto_frame frame.c:264 q_read(pm[w_iov_idx(v)].stream->c, 0) done, exiting event loop
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=7/16384 len=8 coff=15/32768 [seq]
       dec_frames frame.c:903 addtl stream or crypto frame at pos 25, copy
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=15/16384 len=17 coff=32/32768 [seq]
       dec_frames frame.c:891 PADDING len=15
       q_read quic.c:342 read 25 bytes on serv conn 0:3c012818b680a82b strm 4
       serve_cb server.c:110 conn 0:3c012818b680a82b str 4 serving URL /3
       q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:3c012818b680a82b strm 4 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -4 w/1 pkt in queue
1.334   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b tok= len=274 nr=3
       enc_ack_frame frame.c:1167 ACK lg=0 delay=142812 (1142496 usec) cnt=0 block=0 [0]
       enc_padding_frame frame.c:1095 PADDING len=90
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=3837, cwnd=6087, ssthresh=6000, srtt=0.395858, rttvar=0.141544
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 (4) *5 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm -2 w/2 pkts in queue
1.334   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=3c012818b680a82b len=1228 nr=6
       enc_ack_frame frame.c:1167 ACK lg=0 delay=89339 (714712 usec) cnt=0 block=0 [0]
       enc_padding_frame frame.c:1095 PADDING len=91
       log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
       on_pkt_sent recovery.c:285 in_flight=5089, cwnd=6087, ssthresh=6000, srtt=0.395858, rttvar=0.141544
       tx_stream_data conn.c:312 cwnd limit 5089 reached (2020 + 6087 > 1078582761)
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 (4) *5 *6 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm 4 w/1 pkt in queue
1.334   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=1
       enc_ack_frame frame.c:1167 ACK lg=6 delay=53 (424 usec) cnt=1 block=0 [6]
       enc_ack_frame frame.c:1160 ACK gap=2 block=0 [2]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=42e47d2e5a506649
       enc_padding_frame frame.c:1095 PADDING len=22
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=5/8192 len=3 coff=5/16384 
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=42e47d2e5a506649
       on_pkt_sent recovery.c:285 in_flight=5165, cwnd=6087, ssthresh=6000, srtt=0.395858, rttvar=0.141544
       tx_stream_data conn.c:312 cwnd limit 5165 reached (2020 + 6087 > 1078582761)
       log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
       log_sent_pkts conn.c:227 epoch 1/3 unacked: *1 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 (4) *5 *6 
1.335   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=2
       enc_ack_frame frame.c:1167 ACK lg=6 delay=53 (424 usec) cnt=1 block=0 [6]
       enc_ack_frame frame.c:1160 ACK gap=2 block=0 [2]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=42e47d2e5a506649
       on_pkt_sent recovery.c:285 in_flight=5207, cwnd=6087, ssthresh=6000, srtt=0.395858, rttvar=0.141544
1.759   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=3c012818b680a82b scid=000000000000000d tok= len=1207 nr=2
       dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
       update_rtt recovery.c:319 in_flight=5207, cwnd=6087, ssthresh=6000, srtt=0.542235, rttvar=0.398912
       on_pkt_acked recovery.c:461 0 was RTX'ed as 3
       dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
       update_rtt recovery.c:319 in_flight=5207, cwnd=6087, ssthresh=6000, srtt=0.527502, rttvar=0.328649
       on_pkt_acked recovery.c:474 stream -4 fully acked
       dec_frames frame.c:891 PADDING len=1176
2.124   log_pkt pkt.c:126 RX len=54 0xfd=Handshake vers=0xff00000f dcid=3c012818b680a82b scid=000000000000000d len=46 nr=1
       dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
       update_rtt recovery.c:319 in_flight=5207, cwnd=6145, ssthresh=6000, srtt=0.646414, rttvar=0.484309
       dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
       update_rtt recovery.c:319 in_flight=5207, cwnd=6145, ssthresh=6000, srtt=0.664328, rttvar=0.399061
       on_pkt_acked recovery.c:474 stream -2 fully acked
       dec_frames frame.c:891 PADDING len=15
2.665   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
2.665   log_pkt pkt.c:134 RX len=60 0x30=Short kyph=0 dcid=3c012818b680a82b nr=7
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=42e47d2e5a506649
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=32/16384 len=8 coff=40/32768 [seq]
       dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
       update_rtt recovery.c:319 in_flight=5207, cwnd=6389, ssthresh=6000, srtt=0.747628, rttvar=0.465895
       on_pkt_acked recovery.c:474 stream 4 fully acked
       on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
       dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
       update_rtt recovery.c:319 in_flight=5131, cwnd=6389, ssthresh=6000, srtt=0.820515, rttvar=0.495195
       dec_frames frame.c:891 PADDING len=15
       q_write quic.c:302 wrote 3 bytes on serv conn 0:3c012818b680a82b strm 4 
       serve_cb server.c:110 conn 0:3c012818b680a82b str 4 serving URL /index.html
       q_write quic.c:288 writing 4 bytes in 1 buf on serv conn 0:3c012818b680a82b strm 4 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm 4 w/1 pkt in queue
2.665   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=3
       enc_ack_frame frame.c:1167 ACK lg=7 delay=63 (504 usec) cnt=0 block=0 [7]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ceb54ed7259464f1
       enc_padding_frame frame.c:1095 PADDING len=24
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=8/8192 len=4 coff=8/16384 
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ceb54ed7259464f1
       on_pkt_sent recovery.c:285 in_flight=5166, cwnd=6396, ssthresh=6000, srtt=0.820515, rttvar=0.495195
       tx_stream_data conn.c:312 cwnd limit 5166 reached (2020 + 6396 > 1078582761)
       log_sent_pkts conn.c:227 epoch 0 unacked: *1 *2 
       log_sent_pkts conn.c:227 epoch 1/3 unacked: *3 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 *5 
2.665   log_pkt pkt.c:187 TX 0x34=Short kyph=0 dcid=000000000000000d nr=4
       enc_ack_frame frame.c:1167 ACK lg=7 delay=63 (504 usec) cnt=0 block=0 [7]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ceb54ed7259464f1
       on_pkt_sent recovery.c:285 in_flight=5206, cwnd=6396, ssthresh=6000, srtt=0.820515, rttvar=0.495195
3.156   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
3.156   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=3c012818b680a82b scid=000000000000000d tok=8258 len=1205 nr=4
       dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
       update_rtt recovery.c:319 in_flight=5206, cwnd=6396, ssthresh=6000, srtt=1.063480, rttvar=0.857327
       on_pkt_acked recovery.c:461 1 was RTX'ed as 3
       dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
       update_rtt recovery.c:319 in_flight=5206, cwnd=6396, ssthresh=6000, srtt=1.230777, rttvar=0.977590
       on_pkt_acked recovery.c:461 2 was RTX'ed as 3
       dec_frames frame.c:891 PADDING len=1174
3.856   log_pkt pkt.c:134 RX len=81 0x30=Short kyph=0 dcid=3c012818b680a82b nr=12
       dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
       update_rtt recovery.c:319 in_flight=5206, cwnd=6452, ssthresh=6000, srtt=1.225756, rttvar=0.743235
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=ceb54ed7259464f1
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=40/16384 len=8 coff=48/32768 [seq]
       dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
       update_rtt recovery.c:319 in_flight=5166, cwnd=6459, ssthresh=6000, srtt=1.221362, rttvar=0.566214
       on_pkt_acked recovery.c:474 stream 4 fully acked
       on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
       dec_frames frame.c:903 addtl stream or crypto frame at pos 44, copy
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=48/16384 len=17 coff=65/32768 [seq]
       dec_frames frame.c:891 PADDING len=15
       q_write quic.c:302 wrote 4 bytes on serv conn 0:3c012818b680a82b strm 4 
       q_read quic.c:318 blocking read on serv conn 0:3c012818b680a82b
       q_read quic.c:342 read 33 bytes on serv conn 0:3c012818b680a82b strm 4
       serve_cb server.c:110 conn 0:3c012818b680a82b str 4 serving URL /5
       q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:3c012818b680a82b strm 4 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm 4 w/1 pkt in queue
3.856   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=5
       enc_ack_frame frame.c:1167 ACK lg=12 delay=73 (584 usec) cnt=0 block=0 [12]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=999274146d84e40
       enc_padding_frame frame.c:1095 PADDING len=23
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=12/8192 len=5 coff=12/16384 
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=999274146d84e40
       on_pkt_sent recovery.c:285 in_flight=5167, cwnd=6473, ssthresh=6000, srtt=1.221362, rttvar=0.566214
       tx_stream_data conn.c:312 cwnd limit 5167 reached (2020 + 6473 > 1078582761)
       log_sent_pkts conn.c:227 epoch 1/3 unacked: *5 
       log_sent_pkts conn.c:227 epoch 2 unacked: *2 *5 
3.857   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=6
       enc_ack_frame frame.c:1167 ACK lg=12 delay=73 (584 usec) cnt=0 block=0 [12]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=999274146d84e40
       on_pkt_sent recovery.c:285 in_flight=5208, cwnd=6473, ssthresh=6000, srtt=1.221362, rttvar=0.566214
4.032   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
4.032   log_pkt pkt.c:134 RX len=51 0x30=Short kyph=0 dcid=3c012818b680a82b nr=8
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=999274146d84e40
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=65/16384 len=8 coff=73/32768 [seq]
       dec_frames frame.c:891 PADDING len=15
4.057   ack_alarm pn.c:56 ACK timer fired on serv conn 0:3c012818b680a82b epoch 3
4.057   log_pkt pkt.c:187 TX 0x33=Short kyph=0 dcid=000000000000000d nr=7
       enc_ack_frame frame.c:1167 ACK lg=12 delay=25189 (201512 usec) cnt=1 block=0 [12]
       enc_ack_frame frame.c:1160 ACK gap=2 block=0 [8]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=8fa5b1b55e9cb476
       on_pkt_sent recovery.c:285 in_flight=5253, cwnd=6473, ssthresh=6000, srtt=1.221362, rttvar=0.566214
4.377   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
4.377   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=3c012818b680a82b scid=000000000000000d len=41 nr=2
       dec_ack_frame frame.c:388 ACK lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
       update_rtt recovery.c:319 in_flight=5253, cwnd=6473, ssthresh=6000, srtt=1.521487, rttvar=1.024911
       on_pkt_acked recovery.c:461 5 was RTX'ed as 6
       dec_frames frame.c:891 PADDING len=15
4.828   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=3c012818b680a82b scid=000000000000000d len=41 nr=6
       dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
       update_rtt recovery.c:319 in_flight=5253, cwnd=6705, ssthresh=6000, srtt=1.885824, rttvar=1.497356
       on_pkt_acked recovery.c:461 2 was RTX'ed as 6
       dec_frames frame.c:891 PADDING len=15
5.213   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=3c012818b680a82b nr=14
       dec_ack_frame frame.c:388 ACK lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
       update_rtt recovery.c:319 in_flight=5253, cwnd=6929, ssthresh=6000, srtt=1.819607, rttvar=1.255451
       on_pkt_acked recovery.c:474 stream 4 fully acked
       on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
       dec_frames frame.c:891 PADDING len=15
       q_write quic.c:302 wrote 5 bytes on serv conn 0:3c012818b680a82b strm 4 
       serve_cb server.c:110 conn 0:3c012818b680a82b str 4 serving URL /3
       q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:3c012818b680a82b strm 4 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm 4 w/1 pkt in queue
5.213   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=8
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=f003cc6d491b10bf
       enc_padding_frame frame.c:1095 PADDING len=29
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=17/8192 len=3 coff=17/16384 
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=f003cc6d491b10bf
       on_pkt_sent recovery.c:285 in_flight=5251, cwnd=6942, ssthresh=6000, srtt=1.819607, rttvar=1.255451
       tx_stream_data conn.c:312 cwnd limit 5251 reached (2020 + 6942 > 1078582761)
       log_sent_pkts conn.c:227 epoch 1/3 unacked: 6 7 *8 
5.213   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=9
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=f003cc6d491b10bf
       on_pkt_sent recovery.c:285 in_flight=5286, cwnd=6942, ssthresh=6000, srtt=1.819607, rttvar=1.255451
6.043   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
6.043   log_pkt pkt.c:134 RX len=83 0x30=Short kyph=0 dcid=3c012818b680a82b nr=15
       dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
       update_rtt recovery.c:319 in_flight=5286, cwnd=6942, ssthresh=6000, srtt=1.865422, rttvar=1.033219
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=73/16384 len=8 coff=81/32768 [seq]
       dec_frames frame.c:903 addtl stream or crypto frame at pos 31, copy
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=81/16384 len=17 coff=98/32768 [seq]
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=f003cc6d491b10bf
       dec_ack_frame frame.c:388 ACK lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
       update_rtt recovery.c:319 in_flight=5245, cwnd=6949, ssthresh=6000, srtt=1.735949, rttvar=1.033862
       on_pkt_acked recovery.c:474 stream 4 fully acked
       on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
       dec_frames frame.c:891 PADDING len=15
       q_write quic.c:302 wrote 3 bytes on serv conn 0:3c012818b680a82b strm 4 
       serve_cb server.c:110 conn 0:3c012818b680a82b str 4 serving URL /index.html
       q_write quic.c:288 writing 4 bytes in 1 buf on serv conn 0:3c012818b680a82b strm 4 
       tx conn.c:420 data TX on serv conn 0:3c012818b680a82b strm 4 w/1 pkt in queue
6.043   log_pkt pkt.c:187 TX 0x33=Short kyph=0 dcid=000000000000000d nr=10
       enc_ack_frame frame.c:1153 ACK lg=15 delay=81 (648 usec) cnt=1 block=1 [14..5]
       enc_ack_frame frame.c:1160 ACK gap=4 block=0 [8]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=aec73ed8453c8d3
       enc_padding_frame frame.c:1095 PADDING len=21
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=20/8192 len=4 coff=20/16384 
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=aec73ed8453c8d3
       on_pkt_sent recovery.c:285 in_flight=5246, cwnd=6962, ssthresh=6000, srtt=1.735949, rttvar=1.033862
       tx_stream_data conn.c:312 cwnd limit 5246 reached (2020 + 6962 > 1078582761)
       log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 9 *10 
6.043   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=11
       enc_ack_frame frame.c:1153 ACK lg=15 delay=81 (648 usec) cnt=1 block=1 [14..5]
       enc_ack_frame frame.c:1160 ACK gap=4 block=0 [8]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=aec73ed8453c8d3
       on_pkt_sent recovery.c:285 in_flight=5289, cwnd=6962, ssthresh=6000, srtt=1.735949, rttvar=1.033862
6.479   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=3c012818b680a82b nr=16
       dec_ack_frame frame.c:388 ACK lg=9 delay=0 (0 usec) cnt=0 block=0 [9]
       update_rtt recovery.c:319 in_flight=5289, cwnd=6962, ssthresh=6000, srtt=1.677153, rttvar=0.892987
       dec_frames frame.c:891 PADDING len=15
6.754   log_pkt pkt.c:134 RX len=47 0x30=Short kyph=0 dcid=3c012818b680a82b nr=4
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=8fa5b1b55e9cb476
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=f003cc6d491b10bf
       dec_frames frame.c:891 PADDING len=15
6.780   ack_alarm pn.c:56 ACK timer fired on serv conn 0:3c012818b680a82b epoch 3
6.780   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=12
       enc_ack_frame frame.c:1153 ACK lg=16 delay=37652 (301216 usec) cnt=2 block=2 [14..6]
       enc_ack_frame frame.c:1160 ACK gap=4 block=0 [8]
       enc_ack_frame frame.c:1160 ACK gap=2 block=0 [4]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=aec73ed8453c8d3
       on_pkt_sent recovery.c:285 in_flight=5301, cwnd=6968, ssthresh=6000, srtt=1.677153, rttvar=0.892987
7.421   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
7.421   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=3c012818b680a82b nr=1
       dec_ack_frame frame.c:388 ACK lg=7 delay=0 (0 usec) cnt=0 block=0 [7]
       update_rtt recovery.c:319 in_flight=5301, cwnd=6968, ssthresh=6000, srtt=1.887913, rttvar=1.091260
       dec_frames frame.c:891 PADDING len=15
8.069   log_pkt pkt.c:134 RX len=65 0x30=Short kyph=0 dcid=3c012818b680a82b nr=3
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=aec73ed8453c8d3
       dec_ack_frame frame.c:388 ACK lg=12 delay=0 (0 usec) cnt=0 block=0 [12]
       update_rtt recovery.c:319 in_flight=5256, cwnd=6975, ssthresh=6000, srtt=1.813113, rttvar=0.968044
       log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=98/16384 len=8 coff=106/32768 [seq]
       dec_path_response_frame frame.c:732 PATH_RESPONSE data=aec73ed8453c8d3
       dec_frames frame.c:891 PADDING len=15
8.095   ack_alarm pn.c:56 ACK timer fired on serv conn 0:3c012818b680a82b epoch 3
8.095   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=13
       enc_ack_frame frame.c:1167 ACK lg=3 delay=167544 (1340352 usec) cnt=1 block=0 [3]
       enc_ack_frame frame.c:1160 ACK gap=0 block=0 [1]
       enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=5db9fa614f9a81bd
       on_pkt_sent recovery.c:285 in_flight=5254, cwnd=6983, ssthresh=6000, srtt=1.813113, rttvar=0.968044
8.095   set_ld_alarm recovery.c:118 ABORT: assertion failed 
       c->rec.ld_alarm.repeat >= 0 
       repeat -0.011747 [errno 17 = File exists]
       /usr/lib/x86_64-linux-gnu/libasan.so.4(+0x558c0) [0x7f22d6d958c0]
       util_die at /home/mcmillan/projects/quant/Debug/external/warp-prefix/src/warp/lib/src/util.c:224
       set_ld_alarm at /home/mcmillan/projects/quant/lib/src/recovery.c:119
       on_pkt_sent at /home/mcmillan/projects/quant/lib/src/recovery.c:288
       enc_pkt at /home/mcmillan/projects/quant/lib/src/pkt.c:577
       tx_ack at /home/mcmillan/projects/quant/lib/src/conn.c:450
       ack_alarm at /home/mcmillan/projects/quant/lib/src/pn.c:59
       /usr/lib/x86_64-linux-gnu/libev.so.4(ev_invoke_pending+0x53) [0x7f22d5f10d73]
       /usr/lib/x86_64-linux-gnu/libev.so.4(ev_run+0x9ee) [0x7f22d5f143de]
       do_write at /home/mcmillan/projects/quant/lib/src/quic.c:198 (discriminator 2)
       q_write at /home/mcmillan/projects/quant/lib/src/quic.c:300
       q_write_file at /home/mcmillan/projects/quant/lib/src/util.c:90
       serve_cb at /home/mcmillan/projects/quant/bin/server.c:166
       /usr/local/lib/libhttp_parser.so.2.8(http_parser_execute+0x17b5) [0x7f22d6b37e4a]
       main at /home/mcmillan/projects/quant/bin/server.c:277
       /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f22d4c07b97]
       _start at ??:?


ev_async_stop is not called in free_conn

free_conn (https://github.com/NTAP/quant/blob/14/lib/src/conn.c#L1287) does not call ev_async_stop prior to freeing the ev_async (https://github.com/NTAP/quant/blob/14/lib/src/conn.c#L1326).

However, it is initialized in new_conn (https://github.com/NTAP/quant/blob/14/lib/src/conn.c#L1247) with a value inside the conn that is free'd, so there is now a dangling pointer inside the loop.

This doesn't crash because it's an async watcher, and it never gets triggered again, and it seems that libev never looks at it again too closely, or otherwise it would touch upon free'd memory.

This behavior was detected using techniques developed by the SYMBIOSYS research project at COMSYS, RWTH Aachen University. This research is supported by the European Research Council (ERC) under the EU's Horizon 2020 Research and Innovation Programme grant agreement n. 647295 (SYMBIOSYS).

out of bound array access

tls_certs[i].len = (size_t)i2d_X509(x509, &tls_certs[i].base);

Hi,
This is a duplicate. I also created this issue in the master branch.

      do {
            X509 * const x509 = PEM_read_X509(fp, 0, 0, 0);
            if (x509 == 0)
                break;
            tls_certs[i].len = (size_t)i2d_X509(x509, &tls_certs[i].base);
            X509_free(x509);
        } while (i++ < TLS_MAX_CERTS);

this code fragment may crash the application. i++ increments the variable after the comparison. This may mean, that i can hold the value TLS_MAX_CERTS and thus cause the application to crash.

Best Regards

cannot build netmap based quant

Hi Lars,

I installed netmap and it works fine. But after executing make, only client and server based on socket can be generated. How can we leverage warpcore on quant? or how can we generate both socket and warpcore based quant at the same time?

Thanks in advance!

Core Dumped on exectuting ./server (WSL)

Built using(On Ubuntu 18.04 WSL) :-

git submodule update --init --recursive
mkdir Debug
cd Debug
cmake ..
make

Error Log(On executing ./server in quant/Debug/bin/) :-

0.065 q_init quic.c:662 quant/socket (epoll/sendmmsg/recvmmsg) 0.0.27/87911c7 ready
q_init quic.c:663 submit bug reports at https://github.com/NTAP/quant/issues
0.068 init_tls_ctx tls.c:1513 ABORT: assertion failed:
fp
could not open key test/dummy.key [errno 2 = No such file or directory]
/usr/lib/x86_64-linux-gnu/libasan.so.4(+0x558c0) [0x7f67d06958c0]
util_die at /home/gagan/Projects/quant/lib/deps/warpcore/lib/src/util.c:398
init_tls_ctx at /home/gagan/Projects/quant/lib/src/tls.c:1513
q_init at /home/gagan/Projects/quant/lib/src/quic.c:680
main at /home/gagan/Projects/quant/bin/server.c:313
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f67cea21b97]
_start at ??:?
Aborted (core dumped)

I checked the /test directory and it does contain the dummy.key file.

performance: transfer rate decreases over time

Hello,

I ran a simple benchmark test between two machines in LAN with the latest master branch (release build) with the socket backend, and observed the rate started at ~400Mbps but then dropped quickly to ~90Mbps during the first few seconds.

perf report on the server shows these hot functions:

perf report -U
# Children      Self  Command  Shared Object      Symbol                                        
    35.72%    35.57%  server   server             [.] pm_by_nr(_splay)
            |
            ---pm_by_nr(_splay)

    28.90%    28.79%  server   server             [.] find_sent_pkt
            |
            ---find_sent_pkt

    17.43%    17.35%  server   server             [.] diet_find
            |
            ---diet_find

Might that be related to the inflation of un-acked data ranges on the sending side?

By the way, I hit the limit of ~100MB transfer size (complained by either w_iov_sq_len() or w_alloc_iov()), does this also happen with netmap or is there any workaround?

Thanks,

Hoang

memory error in rx_pkts

Here is a report of what looks like a use after free.


0.032   q_init quic.c:507 quant/socket 0.0.16/e2c7fbf with libev/epoll 4.22 ready
        q_init quic.c:508 submit bug reports at https://github.com/NTAP/quant/issues
0.034   q_init quic.c:527 debug build, storing fuzzer corpus data
        q_bind quic.c:362 binding serv socket on port 4443
        init_rec recovery.c:558 in_flight=0 (+0), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1311 serv conn ? on port 4443 created
        new_conn conn.c:1313 serv conn ? state conn_clsd -> conn_idle
        q_bind quic.c:364 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
0.209   rx_pkts conn.c:918 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:000000000000000b
        init_rec recovery.c:558 in_flight=0 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1311 serv conn 0:000000000000000b on port 4443 created
        new_conn conn.c:1313 serv conn 0:000000000000000b state conn_clsd -> conn_idle
0.209   log_pkt pkt.c:123 RX from=127.0.0.1:4988 len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok= len=1207 nr=0
        rx_pkt conn.c:680 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:895 PADDING len=939
        rx_pkt conn.c:705 serv conn 0:000000000000000b state conn_idle -> conn_opng
        update_act_scid conn.c:503 hshk switch to scid 0:542619f7e8a06585 for serv conn (was 0:000000000000000b)
        on_ch tls.c:306 	SNI = 
        on_ch tls.c:309 	ALPN = 
        chk_tp tls.c:471 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:483 	initial_max_data = 16384
        chk_tp tls.c:500 	idle_timeout = 60
        chk_tp tls.c:478 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:465 	initial_max_stream_data_uni = 8192
0.212   rx_crypto conn.c:583 serv conn 0:542619f7e8a06585 state conn_opng -> conn_estb
        tx conn.c:429 data TX on serv conn 0:542619f7e8a06585 strm -4 w/1 pkt in queue
        enc_pkt pkt.c:395 hshk switch to scid 0:d742b82a422c0a61 for serv conn (was 0:542619f7e8a06585)
        update_act_scid conn.c:503 hshk switch to scid 0:d742b82a422c0a61 for serv conn (was 0:542619f7e8a06585)
0.213   log_pkt pkt.c:176 TX to=127.0.0.1:4988 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 tok=5e8e4adf5a6b0923c72e8fe9ed20b2d1deaf979cb96c34bbc70f6deb8a6322cb542619f7e8a06585 len=0 nr=0
        enc_ack_frame frame.c:1171 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1099 PADDING len=97
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:311 in_flight=299 (+299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.200000 sec on serv conn 0:d742b82a422c0a61
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        tx conn.c:429 data TX on serv conn 0:d742b82a422c0a61 strm -2 w/2 pkts in queue
0.213   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 len=0 nr=0
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:311 in_flight=1551 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.200000 sec on serv conn 0:d742b82a422c0a61
0.213   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 len=0 nr=1
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:311 in_flight=1987 (+436), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.200000 sec on serv conn 0:d742b82a422c0a61
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.387   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=50 0x30=Short kyph=0 dcid=d742b82a422c0a61 nr=0
        rx_pkts conn.c:998 received invalid 50-byte 0x30-type pkt, ignoring
0.409   on_ld_alarm recovery.c:226 crypto RTX #1 on serv conn 0:d742b82a422c0a61
        detect_lost_pkts recovery.c:171 pkt 0 considered lost
        detect_lost_pkts recovery.c:210 in_flight=1688 (-299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        detect_lost_pkts recovery.c:171 pkt 0 considered lost
        detect_lost_pkts recovery.c:171 pkt 1 considered lost
        detect_lost_pkts recovery.c:210 in_flight=0 (-1688), cwnd=6000 (-6000), ssthresh=6000 (+6000), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:d742b82a422c0a61 strm -4 w/1 pkt in queue
0.409   log_pkt pkt.c:176 TX to=127.0.0.1:4988 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 tok=5e8e4adf5a6b0923c72e8fe9ed20b2d1deaf979cb96c34bbc70f6deb8a6322cb542619f7e8a06585 len=274 nr=1
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:311 in_flight=299 (+299), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.400000 sec on serv conn 0:d742b82a422c0a61
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        tx conn.c:429 data TX on serv conn 0:d742b82a422c0a61 strm -2 w/2 pkts in queue
0.410   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 len=1228 nr=2
        enc_padding_frame frame.c:1099 PADDING len=99
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:311 in_flight=1551 (+1252), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.400000 sec on serv conn 0:d742b82a422c0a61
0.410   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 len=412 nr=3
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:311 in_flight=1987 (+436), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.400000 sec on serv conn 0:d742b82a422c0a61
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.726   rx_pkts conn.c:952 pkt came from new peer 127.0.0.1:4987, probing
0.727   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=76 0x30=Short kyph=0 dcid=d742b82a422c0a61 nr=0
        rx_pkts conn.c:998 received invalid 76-byte 0x30-type pkt, ignoring
0.810   on_ld_alarm recovery.c:226 crypto RTX #2 on serv conn 0:d742b82a422c0a61
        detect_lost_pkts recovery.c:171 pkt 1 considered lost
        detect_lost_pkts recovery.c:210 in_flight=1688 (-299), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        detect_lost_pkts recovery.c:171 pkt 2 considered lost
        detect_lost_pkts recovery.c:171 pkt 3 considered lost
        detect_lost_pkts recovery.c:210 in_flight=0 (-1688), cwnd=3000 (-3000), ssthresh=3000 (-3000), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:d742b82a422c0a61 strm -4 w/1 pkt in queue
0.810   log_pkt pkt.c:176 TX to=127.0.0.1:4987 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 tok=5e8e4adf5a6b0923c72e8fe9ed20b2d1deaf979cb96c34bbc70f6deb8a6322cb542619f7e8a06585 len=274 nr=2
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:311 in_flight=299 (+299), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.800000 sec on serv conn 0:d742b82a422c0a61
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 
        tx conn.c:429 data TX on serv conn 0:d742b82a422c0a61 strm -2 w/2 pkts in queue
0.810   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 len=1228 nr=4
        enc_padding_frame frame.c:1099 PADDING len=99
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:311 in_flight=1551 (+1252), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.800000 sec on serv conn 0:d742b82a422c0a61
        tx_stream_data conn.c:324 cwnd limit reached at in_flight 1551 + 2020 > 3000
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 *4 
0.897   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=57 0x30=Short kyph=0 dcid=d742b82a422c0a61 nr=0
        rx_pkts conn.c:998 received invalid 57-byte 0x30-type pkt, ignoring
1.280   rx_pkts conn.c:952 pkt came from new peer 127.0.0.1:4988, probing
1.280   log_pkt pkt.c:123 RX from=127.0.0.1:4988 len=1216 0xff=Initial vers=0xff00000f dcid=d742b82a422c0a61 scid=000000000000000d tok=9a10 len=1205 nr=2
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        on_pkt_acked recovery.c:493 0 was RTX'ed as 2
        detect_lost_pkts recovery.c:210 in_flight=1551 (+0), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=1.071270 (+1.071270), rttvar=0.535635 (+0.535635)
        set_ld_timer recovery.c:134 crypto RTX alarm in 1.672209 sec on serv conn 0:d742b82a422c0a61
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        on_pkt_acked recovery.c:493 1 was RTX'ed as 2
        detect_lost_pkts recovery.c:210 in_flight=1551 (+0), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=1.046230 (-0.025040), rttvar=0.451806 (-0.083829)
        set_ld_timer recovery.c:134 crypto RTX alarm in 1.622129 sec on serv conn 0:d742b82a422c0a61
        dec_ack_frame frame.c:391 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        on_pkt_acked recovery.c:506 stream -4 fully acked
        detect_lost_pkts recovery.c:210 in_flight=1252 (-299), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.974243 (-0.071987), rttvar=0.482829 (+0.031023)
        set_ld_timer recovery.c:134 crypto RTX alarm in 1.478154 sec on serv conn 0:d742b82a422c0a61
        dec_frames frame.c:895 PADDING len=1169
1.423   log_pkt pkt.c:133 RX from=127.0.0.1:4988 len=99 0xfd=Handshake vers=0xff00000f dcid=d742b82a422c0a61 scid=000000000000000d len=91 nr=0
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=52 [seq]
        dec_frames frame.c:895 PADDING len=15
1.448   ack_alarm pn.c:56 ACK timer fired on serv conn 0:d742b82a422c0a61 epoch 2
1.448   log_pkt pkt.c:186 TX to=127.0.0.1:4988 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=d742b82a422c0a61 len=0 nr=5
        enc_ack_frame frame.c:1171 ACK lg=0 delay=3181 (25448 usec) cnt=0 block=0 [0]
1.543   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=50 0x30=Short kyph=0 dcid=d742b82a422c0a61 nr=9
        new_stream stream.c:101 serv conn 0:d742b82a422c0a61 strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=15/65535 len=17 coff=17/393210 [ooo]
        dec_frames frame.c:895 PADDING len=15
1.569   ack_alarm pn.c:56 ACK timer fired on serv conn 0:d742b82a422c0a61 epoch 3
1.569   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x31=Short kyph=0 dcid=000000000000000d nr=0
        enc_ack_frame frame.c:1171 ACK lg=9 delay=3182 (25456 usec) cnt=0 block=0 [9]
        enc_new_token_frame frame.c:1498 NEW_TOKEN len=40 tok=5e8e4adf5a6b0923c72e8fe9ed20b2d1deaf979cb96c34bbc70f6deb8a6322cb542619f7e8a06585
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=fd732cf72b532b8c
        enc_new_cid_frame frame.c:1477 NEW_CONNECTION_ID seq=1 len=8 cid=1:af22b77425c5414c tok=5fe56b195ab8371f9e0d8034f9358acf
        on_pkt_sent recovery.c:311 in_flight=1362 (+110), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.974243 (+0.000000), rttvar=0.482829 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 1.189695 sec on serv conn 0:d742b82a422c0a61
1.749   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=34 0x30=Short kyph=0 dcid=d742b82a422c0a61 nr=5
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x963d off=32
        dec_rst_stream_frame frame.c:806 serv conn 0:d742b82a422c0a61 strm 4 (bidir, clnt) state strm_open -> strm_clsd
        dec_frames frame.c:895 PADDING len=15
1.774   ack_alarm pn.c:56 ACK timer fired on serv conn 0:d742b82a422c0a61 epoch 3
1.774   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x30=Short kyph=0 dcid=000000000000000d nr=1
        enc_ack_frame frame.c:1171 ACK lg=9 delay=28893 (231144 usec) cnt=1 block=0 [9]
        enc_ack_frame frame.c:1164 ACK gap=2 block=0 [5]
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=fd732cf72b532b8c
        on_pkt_sent recovery.c:311 in_flight=1407 (+45), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.974243 (+0.000000), rttvar=0.482829 (+0.000000)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.984002 sec on serv conn 0:d742b82a422c0a61
2.226   rx_pkts conn.c:952 pkt came from new peer 127.0.0.1:4987, probing
2.226   log_pkt pkt.c:141 RX from=127.0.0.1:4987 len=78 0x30=Short kyph=0 dcid=d742b82a422c0a61 nr=3
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        detect_lost_pkts recovery.c:210 in_flight=1297 (-110), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.934653 (-0.039589), rttvar=0.441300 (-0.041529)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.452987 sec on serv conn 0:d742b82a422c0a61
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=32/65535 len=8 coff=25/393210 [ooo]
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x661b off=40
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:d742b82a422c0a61 strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        detect_lost_pkts recovery.c:210 in_flight=1252 (-45), cwnd=3000 (+0), ssthresh=3000 (+0), srtt=0.874301 (-0.060352), rttvar=0.451679 (+0.010379)
        set_ld_timer recovery.c:134 crypto RTX alarm in 0.332283 sec on serv conn 0:d742b82a422c0a61
        dec_frames frame.c:907 addtl stream or crypto frame at pos 40, copy
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=40/65535 len=8 coff=33/393210 [ooo]
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x7b6a off=48
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:d742b82a422c0a61 strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0x15ed off=48
        dec_rst_stream_frame frame.c:806 useless transition: serv conn 0:d742b82a422c0a61 strm 4 (bidir, clnt) state strm_clsd -> strm_clsd
        dec_frames frame.c:895 PADDING len=15
        free_stream stream.c:133 freeing strm 4 on serv conn 0:d742b82a422c0a61
=================================================================
==17541==ERROR: AddressSanitizer: use-after-poison on address 0x7f1d85afade0 at pc 0x559285d6d5af bp 0x7ffee0b6a100 sp 0x7ffee0b6a0f0
READ of size 8 at 0x7f1d85afade0 thread T0
    #0 0x559285d6d5ae in pm_free /home/mcmillan/projects/quant/lib/src/quic.c:125
    #1 0x559285dcd221 in rx_pkts /home/mcmillan/projects/quant/lib/src/conn.c:1022
    #2 0x559285dcd9c9 in rx /home/mcmillan/projects/quant/lib/src/conn.c:1041
    #3 0x7f1d968ebd72 in ev_invoke_pending (/usr/lib/x86_64-linux-gnu/libev.so.4+0x3d72)
    #4 0x7f1d968ef3dd in ev_run (/usr/lib/x86_64-linux-gnu/libev.so.4+0x73dd)
    #5 0x559285d88066 in q_rx_ready /home/mcmillan/projects/quant/lib/src/quic.c:660
    #6 0x559285d696b4 in main /home/mcmillan/projects/quant/bin/server.c:246
    #7 0x7f1d955e2b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #8 0x559285d67159 in _start (/home/mcmillan/projects/quant/Debug/bin/server+0x1ac159)

0x7f1d85afade0 is located 34387424 bytes inside of 34400344-byte region [0x7f1d83a2f800,0x7f1d85afe058)
allocated by thread T0 here:
    #0 0x7f1d977f9d38 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded38)
    #1 0x559285d81153 in q_init /home/mcmillan/projects/quant/lib/src/quic.c:489
    #2 0x559285d69118 in main /home/mcmillan/projects/quant/bin/server.c:234
    #3 0x7f1d955e2b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

SUMMARY: AddressSanitizer: use-after-poison /home/mcmillan/projects/quant/lib/src/quic.c:125 in pm_free
Shadow bytes around the buggy address:
  0x0fe430b57560: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b57570: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b57580: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b57590: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b575a0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
=>0x0fe430b575b0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7[f7]f7 f7 f7
  0x0fe430b575c0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b575d0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b575e0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b575f0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
  0x0fe430b57600: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==17541==ABORTING
mcmillan@kenmcmil-z420:~/projects/ivy/doc/examples/quic$ 


launching multiple connections with the same server.

Hi, is it possible to establish multiple connections (e.g., 20 cones) with the same server (i.e. with the same interface and port) for multiple clients using the current version? If so, what cmd do I have to use? Thanks.

client-warp failed with errno 2

Hi,
I connected 2 servers back to back. And start the client-warp on one server. But it exited with log like this

# ./bin/client-warp -i ens3f0 http://192.168.0.1:5599/output.dat
0.407   q_init quic.c:609 quant/netmap (default) 0.0.24/b9cadb0 ready
        q_init quic.c:610 submit bug reports at https://github.com/NTAP/quant/issues
0.408   read_tickets tls.c:1321 reading TLS tickets from /tmp/quant-session
        read_tickets tls.c:1326 could not read TLS tickets from /tmp/quant-session
        main client.c:509 client-warp retrieving http://192.168.0.1:5599/output.dat
        new_conn conn.c:1924 clnt conn 0:acf1073d on port 13702 created
        q_connect quic.c:249 new 1-RTT clnt conn 0:acf1073d to 192.168.0.1:5599, 17 bytes queued for TX
0.409    :0 ABORT: DIED [errno 2 = No such file or directory]
        /usr/lib/x86_64-linux-gnu/libasan.so.5(+0xafeac) [0x7f4da84feeac]
        util_die at /**/quant/lib/deps/warpcore/lib/src/util.c:399
        rem_sock at /**/quant/lib/deps/warpcore/lib/src/backend_netmap.c:73
         (inlined by) rem_sock at /**/quant/lib/deps/warpcore/lib/src/backend_netmap.c:70
         (inlined by) backend_connect at /**/quant/lib/deps/warpcore/lib/src/backend_netmap.c:291
        w_connect at /**/quant/lib/deps/warpcore/lib/src/warpcore.c:259
        q_connect at /**/quant/lib/src/quic.c:255
        get at /**/quant/bin/client.c:269
        main at /**/quant/bin/client.c:510
        /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f4da728a09b]
        _start at ??:?
Aborted (core dumped)

and I also ran client with a socket version. It worked just fine. The problem only exists in the netmap version.

How should I proceed?
Thanks,

Get socket-handle

Hi!
We are thinking about using this quic-stack in a C++-Framework. Since our network-design depends on epoll and the resulting events that come with it we need to be able to get the socket-handle.
I was looking around the interface and couldn't find such a function to get the created handle from the lib/warpcore-stack. Is there any way that I'm missing, or is it really not possible to get the handle?

APPLICATION_CLOSE sent in initial packet

I am currently working on a specification-based compliance tester for QUIC. The tester turned up the following behavior of the quant server that appears not to conform to specification draft 15/16.

In this execution, an http parse error occurs (because the tester is sending random data on a stream). Quant sends an application close frame inside an intial packet, which appears not to be allowed by the
spec. The spec says:

The payload of an Initial packet includes a CRYPTO frame (or frames)
containing a cryptographic handshake message, ACK frames, or both.
PADDING and CONNECTION_CLOSE frames are also permitted. An endpoint
that receives an Initial packet containing other frames can either
discard the packet as spurious or treat it as a connection error.

This appears to indicate that an APPLICATION_CLOSE frame occurring in an initial packet is a protocol error.

Here is the log output produced by quant in this test case:

$ server -d . -c leaf_cert.pem -k leaf_cert.key -p 4443
0.032   q_init quic.c:498 quant/socket 0.0.16/dd567715 with libev 4.22 ready
        q_init quic.c:499 submit bug reports at https://github.com/NTAP/quant/issues
0.034   q_init quic.c:521 debug build, storing fuzzer corpus data
        q_bind quic.c:368 binding serv socket on port 4443
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn ? on port 4443 created
        new_conn conn.c:1267 conn ? state conn_clsd -> conn_idle
        q_bind quic.c:370 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
427.512   rx_pkts conn.c:885 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:000000000000000b
          init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
          new_conn conn.c:1265 serv conn 0:000000000000000b on port 4443 created
          new_conn conn.c:1267 conn 0:000000000000000b state conn_clsd -> conn_idle
427.513   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok= len=1207 nr=0
          rx_pkt conn.c:642 supporting clnt-requested vers 0xff00000f
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=243 [seq]
          dec_frames frame.c:891 PADDING len=939
          rx_pkt conn.c:668 conn 0:000000000000000b state conn_idle -> conn_opng
          update_act_scid conn.c:465 hshk switch to scid 0:fa15135b1bb7c15d for serv conn (was 0:000000000000000b)
          on_ch tls.c:310 	SNI = 
          on_ch tls.c:313 	ALPN = 
427.514   chk_tp tls.c:473 	initial_max_stream_data_bidi_local = 8192
          chk_tp tls.c:485 	initial_max_data = 16384
          chk_tp tls.c:502 	idle_timeout = 60
          chk_tp tls.c:480 	initial_max_stream_data_bidi_remote = 8192
          chk_tp tls.c:467 	initial_max_stream_data_uni = 8192
427.522   rx_crypto conn.c:545 conn 0:fa15135b1bb7c15d state conn_opng -> conn_estb
          tx conn.c:420 data TX on serv conn 0:fa15135b1bb7c15d strm -4 w/1 pkt in queue
          enc_pkt pkt.c:386 hshk switch to scid 0:88a5f94c9e7a3a74 for serv conn (was 0:fa15135b1bb7c15d)
          update_act_scid conn.c:465 hshk switch to scid 0:88a5f94c9e7a3a74 for serv conn (was 0:fa15135b1bb7c15d)
427.522   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 tok=feeab57c9b1bc644a6564dacc67ae0e1a50eabe8345b68934aef3b9b0d6163d2fa15135b1bb7c15d len=0 nr=0
          enc_ack_frame frame.c:1167 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
          enc_padding_frame frame.c:1095 PADDING len=97
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 
          on_pkt_sent recovery.c:285 in_flight=299, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -2 w/2 pkts in queue
427.522   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=0 nr=0
          enc_padding_frame frame.c:1095 PADDING len=103
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 
          on_pkt_sent recovery.c:285 in_flight=1551, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
427.523   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=0 nr=1
          enc_padding_frame frame.c:1095 PADDING len=103
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 
          on_pkt_sent recovery.c:285 in_flight=1987, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 
          log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
          coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
427.712   on_ld_alarm recovery.c:201 handshake RTX #1 on serv conn 0:88a5f94c9e7a3a74
          detect_lost_pkts recovery.c:155 pkt 0 considered lost
          detect_lost_pkts recovery.c:162 in_flight=1688, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
          detect_lost_pkts recovery.c:155 pkt 0 considered lost
          detect_lost_pkts recovery.c:162 in_flight=436, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
          detect_lost_pkts recovery.c:155 pkt 1 considered lost
          detect_lost_pkts recovery.c:162 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
          detect_lost_pkts recovery.c:185 in_flight=0, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -4 w/1 pkt in queue
427.713   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 tok=feeab57c9b1bc644a6564dacc67ae0e1a50eabe8345b68934aef3b9b0d6163d2fa15135b1bb7c15d len=274 nr=1
          enc_ack_frame frame.c:1167 ACK lg=0 delay=25037 (200296 usec) cnt=0 block=0 [0]
          enc_padding_frame frame.c:1095 PADDING len=90
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
          on_pkt_sent recovery.c:285 in_flight=299, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
          log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -2 w/2 pkts in queue
427.713   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=1228 nr=2
          enc_padding_frame frame.c:1095 PADDING len=99
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
          on_pkt_sent recovery.c:285 in_flight=1551, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
427.713   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=412 nr=3
          enc_padding_frame frame.c:1095 PADDING len=98
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
          on_pkt_sent recovery.c:285 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
          log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
          coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
428.113   on_ld_alarm recovery.c:201 handshake RTX #2 on serv conn 0:88a5f94c9e7a3a74
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -4 w/1 pkt in queue
428.113   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 tok=feeab57c9b1bc644a6564dacc67ae0e1a50eabe8345b68934aef3b9b0d6163d2fa15135b1bb7c15d len=274 nr=2
          enc_ack_frame frame.c:1167 ACK lg=0 delay=75114 (600912 usec) cnt=0 block=0 [0]
          enc_padding_frame frame.c:1095 PADDING len=90
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
          on_pkt_sent recovery.c:285 in_flight=2286, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
          log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -2 w/2 pkts in queue
428.113   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=1228 nr=4
          enc_padding_frame frame.c:1095 PADDING len=99
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
          on_pkt_sent recovery.c:285 in_flight=3538, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
428.113   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=412 nr=5
          enc_padding_frame frame.c:1095 PADDING len=98
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
          on_pkt_sent recovery.c:285 in_flight=3974, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
          log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 
          coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
428.390   log_pkt pkt.c:126 RX len=104 0xfd=Handshake vers=0xff00000f dcid=88a5f94c9e7a3a74 scid=000000000000000d len=96 nr=0
          log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=52 [seq]
          dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
          update_rtt recovery.c:319 in_flight=3974, cwnd=6000, ssthresh=6000, srtt=0.878110, rttvar=0.439055
          on_pkt_acked recovery.c:461 0 was RTX'ed as 4
          dec_frames frame.c:891 PADDING len=15
428.416   ack_alarm pn.c:56 ACK timer fired on serv conn 0:88a5f94c9e7a3a74 epoch 2
428.416   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=0 nr=6
          enc_ack_frame frame.c:1167 ACK lg=0 delay=3203 (25624 usec) cnt=0 block=0 [0]
428.604   log_pkt pkt.c:134 RX len=44 0x30=Short kyph=0 dcid=88a5f94c9e7a3a74 nr=0
          new_stream stream.c:101 conn 0:88a5f94c9e7a3a74 strm 4 (bidir, clnt) state strm_idle -> strm_open
          log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=0/16384 len=1 coff=1/32768 [seq]
          dec_frames frame.c:903 addtl stream or crypto frame at pos 18, copy
          log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=1/16384 len=1 coff=2/32768 [seq]
          dec_frames frame.c:903 addtl stream or crypto frame at pos 23, copy
          log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=2/16384 len=1 coff=3/32768 [seq]
          dec_frames frame.c:891 PADDING len=15
          rx conn.c:1023 q_rx_ready(0, 0) done, exiting event loop
          q_rx_ready quic.c:657 serv conn 0:88a5f94c9e7a3a74 ready to rx
          q_read quic.c:318 non-blocking read on serv conn 0:88a5f94c9e7a3a74
          q_read quic.c:342 read 3 bytes on serv conn 0:88a5f94c9e7a3a74 strm 4
          main server.c:281 HTTP parser error: -
          q_read quic.c:318 non-blocking read on serv conn 0:88a5f94c9e7a3a74
          q_close quic.c:548 closing serv conn 0:88a5f94c9e7a3a74 on port 4443
          q_close quic.c:556 conn 0:88a5f94c9e7a3a74 state conn_estb -> conn_qlse
          enter_closing conn.c:1133 closing/draining alarm in 4.390550 sec on serv conn 0:88a5f94c9e7a3a74
          enter_closing conn.c:1139 conn 0:88a5f94c9e7a3a74 state conn_qlse -> conn_clsg
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -4 w/1 pkt in queue
428.605   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 tok=feeab57c9b1bc644a6564dacc67ae0e1a50eabe8345b68934aef3b9b0d6163d2fa15135b1bb7c15d len=274 nr=3
          enc_ack_frame frame.c:1167 ACK lg=0 delay=136602 (1092816 usec) cnt=0 block=0 [0]
          enc_close_frame frame.c:1280 APPLICATION_CLOSE err=0x0000 rlen=0 reason=
          on_pkt_sent recovery.c:285 in_flight=4028, cwnd=6000, ssthresh=6000, srtt=0.878110, rttvar=0.439055
          tx_stream_data conn.c:312 cwnd limit 4028 reached (2020 + 6000 > 511163881)
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
          log_sent_pkts conn.c:227 epoch 2 unacked: *1 *2 *3 *4 *5 (6) 
          tx conn.c:420 data TX on serv conn 0:88a5f94c9e7a3a74 strm -2 w/2 pkts in queue
428.605   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=88a5f94c9e7a3a74 len=1228 nr=7
          enc_ack_frame frame.c:1167 ACK lg=0 delay=26839 (214712 usec) cnt=0 block=0 [0]
          enc_close_frame frame.c:1280 APPLICATION_CLOSE err=0x0000 rlen=0 reason=
          on_pkt_sent recovery.c:285 in_flight=4081, cwnd=6000, ssthresh=6000, srtt=0.878110, rttvar=0.439055
          tx_stream_data conn.c:312 cwnd limit 4081 reached (2020 + 6000 > 511163881)
          log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
          log_sent_pkts conn.c:227 epoch 2 unacked: *1 *2 *3 *4 *5 (6) *7 
428.605   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=0
          enc_ack_frame frame.c:1167 ACK lg=0 delay=79 (632 usec) cnt=0 block=0 [0]
          enc_close_frame frame.c:1280 APPLICATION_CLOSE err=0x0000 rlen=0 reason=
          on_pkt_sent recovery.c:285 in_flight=4117, cwnd=6000, ssthresh=6000, srtt=0.878110, rttvar=0.439055
          coalesce pkt.c:218 coalescing 0xfd len 53 behind 0xff len 54
          coalesce pkt.c:218 coalescing 0x32 len 36 behind 0xfd len 107
432.998   enter_closed conn.c:1080 conn 0:88a5f94c9e7a3a74 state conn_clsg -> conn_clsd
          enter_closed conn.c:1083 <any>(c, 0) done, exiting event loop
          free_stream stream.c:132 freeing strm 4 on serv conn 0:88a5f94c9e7a3a74
443.008   cancel_api_call quic.c:380 canceling API call
          cancel_api_call quic.c:383 q_rx_ready(0, 0) done, exiting event loop
443.026   main server.c:294 server exiting


Server sends packets to new address without highest packet number

Here is a case where the server sends a non-probing packet to a new
address, though the packet received from the new address does not have
the highest packet number received.

In the server log, the source IP addresses are not shown. The packets from
the new IP address are at the following times:

2.682
2.956

Neither of these packets has a largest packet number. The largest packet
number at the time is 8, from the packet received at 1.688.

The packet sent by the server to the new address is a handshake packet
at time 2.682, whish seems to be in response to the first packet from
the new address.

This behavior violates the following requirement from section 9.3 of
draft-16:

An endpoint only changes the address that it sends packets to in
response to the highest-numbered non-probing packet.

Also, the server sends a rapid sequence of packets to the new address,
which might violate this provision:

An endpoint MAY send data to an unvalidated peer address, but it MUST
protect against potential attacks as described in Section 9.3.1

Here is the full server log:

0.033   q_init quic.c:498 quant/socket 0.0.16/dd567715 with libev 4.22 ready
        q_init quic.c:499 submit bug reports at https://github.com/NTAP/quant/issues
0.035   q_init quic.c:521 debug build, storing fuzzer corpus data
        q_bind quic.c:368 binding serv socket on port 4443
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn ? on port 4443 created
        new_conn conn.c:1267 conn ? state conn_clsd -> conn_idle
        q_bind quic.c:370 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
0.181   rx_pkts conn.c:885 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:000000000000000b
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn 0:000000000000000b on port 4443 created
        new_conn conn.c:1267 conn 0:000000000000000b state conn_clsd -> conn_idle
0.181   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok=41 len=1206 nr=0
        rx_pkt conn.c:642 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:891 PADDING len=938
        rx_pkt conn.c:668 conn 0:000000000000000b state conn_idle -> conn_opng
        update_act_scid conn.c:465 hshk switch to scid 0:3c4d81de72a09616 for serv conn (was 0:000000000000000b)
        on_ch tls.c:310 	SNI = 
        on_ch tls.c:313 	ALPN = 
        chk_tp tls.c:473 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:485 	initial_max_data = 16384
        chk_tp tls.c:502 	idle_timeout = 60
        chk_tp tls.c:480 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:467 	initial_max_stream_data_uni = 8192
0.184   rx_crypto conn.c:545 conn 0:3c4d81de72a09616 state conn_opng -> conn_estb
        tx conn.c:420 data TX on serv conn 0:3c4d81de72a09616 strm -4 w/1 pkt in queue
        enc_pkt pkt.c:386 hshk switch to scid 0:e5bc828ce04d5cfd for serv conn (was 0:3c4d81de72a09616)
        update_act_scid conn.c:465 hshk switch to scid 0:e5bc828ce04d5cfd for serv conn (was 0:3c4d81de72a09616)
0.184   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd tok=c93c52f2f38e02e8a913ea895e9342a15449be3b8fe66e90e8293584c26484783c4d81de72a09616 len=0 nr=0
        enc_ack_frame frame.c:1167 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=97
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:285 in_flight=299, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -2 w/2 pkts in queue
0.185   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=0 nr=0
        enc_padding_frame frame.c:1095 PADDING len=103
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:285 in_flight=1551, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
0.185   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=0 nr=1
        enc_padding_frame frame.c:1095 PADDING len=103
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:285 in_flight=1987, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
0.381   on_ld_alarm recovery.c:201 handshake RTX #1 on serv conn 0:e5bc828ce04d5cfd
        detect_lost_pkts recovery.c:155 pkt 0 considered lost
        detect_lost_pkts recovery.c:162 in_flight=1688, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:155 pkt 0 considered lost
        detect_lost_pkts recovery.c:162 in_flight=436, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:155 pkt 1 considered lost
        detect_lost_pkts recovery.c:162 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:185 in_flight=0, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -4 w/1 pkt in queue
0.381   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd tok=c93c52f2f38e02e8a913ea895e9342a15449be3b8fe66e90e8293584c26484783c4d81de72a09616 len=274 nr=1
        enc_ack_frame frame.c:1167 ACK lg=0 delay=25049 (200392 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=299, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -2 w/2 pkts in queue
0.382   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=1228 nr=2
        enc_padding_frame frame.c:1095 PADDING len=99
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=1551, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
0.382   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=412 nr=3
        enc_padding_frame frame.c:1095 PADDING len=98
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
0.414   log_pkt pkt.c:126 RX len=99 0xfd=Handshake vers=0xff00000f dcid=e5bc828ce04d5cfd scid=000000000000000d len=91 nr=0
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=52 [seq]
        dec_frames frame.c:891 PADDING len=15
0.439   ack_alarm pn.c:56 ACK timer fired on serv conn 0:e5bc828ce04d5cfd epoch 2
0.439   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=0 nr=4
        enc_ack_frame frame.c:1167 ACK lg=0 delay=3192 (25536 usec) cnt=0 block=0 [0]
0.553   log_pkt pkt.c:134 RX len=40 0x30=Short kyph=0 dcid=e5bc828ce04d5cfd nr=0
        new_stream stream.c:101 conn 0:e5bc828ce04d5cfd strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=0/16384 len=7 coff=7/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
        rx conn.c:1023 q_rx_ready(0, 0) done, exiting event loop
        q_rx_ready quic.c:657 serv conn 0:e5bc828ce04d5cfd ready to rx
        q_read quic.c:318 blocking read on serv conn 0:e5bc828ce04d5cfd
        q_read quic.c:342 read 7 bytes on serv conn 0:e5bc828ce04d5cfd strm 4
        serve_cb server.c:110 conn 0:e5bc828ce04d5cfd str 4 serving URL /5
        q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:e5bc828ce04d5cfd strm 4 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -4 w/1 pkt in queue
0.553   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd tok=c93c52f2f38e02e8a913ea895e9342a15449be3b8fe66e90e8293584c26484783c4d81de72a09616 len=274 nr=2
        enc_ack_frame frame.c:1167 ACK lg=0 delay=46542 (372336 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=2286, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -2 w/2 pkts in queue
0.553   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=1228 nr=5
        enc_ack_frame frame.c:1167 ACK lg=0 delay=17437 (139496 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=91
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=3538, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
0.554   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=412 nr=6
        enc_ack_frame frame.c:1167 ACK lg=0 delay=17437 (139496 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=3974, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm 4 w/1 pkt in queue
0.554   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=0
        enc_ack_frame frame.c:1167 ACK lg=0 delay=54 (432 usec) cnt=0 block=0 [0]
        enc_max_stream_id_frame frame.c:1347 MAX_STREAM_ID max=8
        enc_padding_frame frame.c:1095 PADDING len=31
        log_stream_or_crypto_frame frame.c:111 STREAM 0x12=LEN id=4/8 off=0/8192 len=5 coff=0/16384 
        enc_new_token_frame frame.c:1494 NEW_TOKEN len=40 tok=c93c52f2f38e02e8a913ea895e9342a15449be3b8fe66e90e8293584c26484783c4d81de72a09616
        enc_new_cid_frame frame.c:1473 NEW_CONNECTION_ID seq=1 len=8 cid=1:ada42f915c150c61 tok=dfd5db0ae4889bb3c01e86b7cbf54e89
        on_pkt_sent recovery.c:285 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx_stream_data conn.c:312 cwnd limit 4112 reached (2020 + 6000 > 1298304489)
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: *0 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
        coalesce pkt.c:218 coalescing 0x36 len 138 behind 0xfd len 735
0.757   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=e5bc828ce04d5cfd scid=000000000000000d len=41 nr=2
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.576479, rttvar=0.288239
        on_pkt_acked recovery.c:461 0 was RTX'ed as 5
        dec_frames frame.c:891 PADDING len=15
0.974   log_pkt pkt.c:134 RX len=41 0x35=Short kyph=0 dcid=e5bc828ce04d5cfd nr=1
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=7/16384 len=8 coff=15/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
0.999   ack_alarm pn.c:56 ACK timer fired on serv conn 0:e5bc828ce04d5cfd epoch 3
0.999   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=1
        enc_ack_frame frame.c:1153 ACK lg=1 delay=3172 (25376 usec) cnt=0 block=1 [0..1]
1.478   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=e5bc828ce04d5cfd scid=000000000000000d tok= len=1207 nr=1
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.666606, rttvar=0.396433
        on_pkt_acked recovery.c:461 0 was RTX'ed as 2
        dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        update_rtt recovery.c:319 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.720418, rttvar=0.404949
        on_pkt_acked recovery.c:461 1 was RTX'ed as 2
        dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        update_rtt recovery.c:319 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.746009, rttvar=0.354895
        on_pkt_acked recovery.c:474 stream -4 fully acked
        dec_frames frame.c:891 PADDING len=1171
1.688   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=e5bc828ce04d5cfd nr=8
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=4112, cwnd=6059, ssthresh=6000, srtt=0.794646, rttvar=0.363445
        on_pkt_acked recovery.c:474 stream 4 fully acked
        on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
        dec_frames frame.c:891 PADDING len=15
        q_write quic.c:302 wrote 5 bytes on serv conn 0:e5bc828ce04d5cfd strm 4 
        q_read quic.c:318 blocking read on serv conn 0:e5bc828ce04d5cfd
        q_read quic.c:342 read 8 bytes on serv conn 0:e5bc828ce04d5cfd strm 4
        serve_cb server.c:110 conn 0:e5bc828ce04d5cfd str 4 serving URL /3
        q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:e5bc828ce04d5cfd strm 4 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -2 w/2 pkts in queue
1.689   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=1228 nr=7
        enc_padding_frame frame.c:1095 PADDING len=99
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=5226, cwnd=6059, ssthresh=6000, srtt=0.794646, rttvar=0.363445
        tx_stream_data conn.c:312 cwnd limit 5226 reached (2020 + 6059 > 1298304489)
        log_sent_pkts conn.c:227 epoch 1/3 unacked: (1) 
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 *2 *3 (4) *5 *6 *7 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm 4 w/1 pkt in queue
1.689   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=2
        enc_padding_frame frame.c:1095 PADDING len=38
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=5/8192 len=3 coff=5/16384 
        on_pkt_sent recovery.c:285 in_flight=5293, cwnd=6059, ssthresh=6000, srtt=0.794646, rttvar=0.363445
        tx_stream_data conn.c:312 cwnd limit 5293 reached (2020 + 6059 > 1298304489)
        log_sent_pkts conn.c:227 epoch 1/3 unacked: (1) *2 
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 *2 *3 (4) *5 *6 *7 
1.953   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=e5bc828ce04d5cfd scid=000000000000000d len=41 nr=8
        dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
        update_rtt recovery.c:319 in_flight=5293, cwnd=6059, ssthresh=6000, srtt=0.884488, rttvar=0.452267
        dec_frames frame.c:891 PADDING len=15
2.365   log_pkt pkt.c:126 RX len=54 0xfd=Handshake vers=0xff00000f dcid=e5bc828ce04d5cfd scid=000000000000000d len=46 nr=12
        dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        update_rtt recovery.c:319 in_flight=5293, cwnd=6059, ssthresh=6000, srtt=1.021826, rttvar=0.613877
        on_pkt_acked recovery.c:461 2 was RTX'ed as 7
        dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
        update_rtt recovery.c:319 in_flight=5293, cwnd=6306, ssthresh=6000, srtt=1.120504, rttvar=0.657763
        dec_frames frame.c:891 PADDING len=15
2.681   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
2.682   log_pkt pkt.c:134 RX len=55 0x30=Short kyph=0 dcid=e5bc828ce04d5cfd nr=4
        dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        update_rtt recovery.c:319 in_flight=5293, cwnd=6388, ssthresh=6000, srtt=1.104517, rttvar=0.525296
        on_pkt_acked recovery.c:474 stream 4 fully acked
        on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
        detect_lost_pkts recovery.c:155 pkt 1 considered lost
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=15/16384 len=17 coff=32/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -2 w/2 pkts in queue
2.682   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=1228 nr=8
        enc_padding_frame frame.c:1095 PADDING len=99
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=6478, cwnd=6400, ssthresh=6000, srtt=1.104517, rttvar=0.525296
        tx_stream_data conn.c:312 cwnd limit 6478 reached (2020 + 6400 > 1298304489)
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 *3 *5 *7 *8 
2.682   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=3
        enc_ack_frame frame.c:1167 ACK lg=8 delay=124130 (993040 usec) cnt=2 block=0 [8]
        enc_ack_frame frame.c:1160 ACK gap=2 block=0 [4]
        enc_ack_frame frame.c:1160 ACK gap=1 block=0 [1]
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=12a4ed9cf5a250b0
        on_pkt_sent recovery.c:285 in_flight=6525, cwnd=6400, ssthresh=6000, srtt=1.104517, rttvar=0.525296
        q_write quic.c:302 wrote 3 bytes on serv conn 0:e5bc828ce04d5cfd strm 4 
        q_read quic.c:318 blocking read on serv conn 0:e5bc828ce04d5cfd
        q_read quic.c:342 read 17 bytes on serv conn 0:e5bc828ce04d5cfd strm 4
        serve_cb server.c:110 conn 0:e5bc828ce04d5cfd str 4 serving URL /index.html
        q_write quic.c:288 writing 4 bytes in 1 buf on serv conn 0:e5bc828ce04d5cfd strm 4 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm -2 w/2 pkts in queue
2.682   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=e5bc828ce04d5cfd len=1228 nr=9
        enc_padding_frame frame.c:1095 PADDING len=99
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=7777, cwnd=6400, ssthresh=6000, srtt=1.104517, rttvar=0.525296
        tx_stream_data conn.c:312 cwnd limit 7777 reached (2020 + 6400 > 1298304489)
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 3 
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 *3 *5 *7 *8 *9 
        tx conn.c:420 data TX on serv conn 0:e5bc828ce04d5cfd strm 4 w/1 pkt in queue
2.682   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=4
        enc_ack_frame frame.c:1167 ACK lg=8 delay=124237 (993896 usec) cnt=2 block=0 [8]
        enc_ack_frame frame.c:1160 ACK gap=2 block=0 [4]
        enc_ack_frame frame.c:1160 ACK gap=1 block=0 [1]
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=12a4ed9cf5a250b0
        enc_padding_frame frame.c:1095 PADDING len=17
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=8/8192 len=4 coff=8/16384 
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=12a4ed9cf5a250b0
        on_pkt_sent recovery.c:285 in_flight=7854, cwnd=6400, ssthresh=6000, srtt=1.104517, rttvar=0.525296
        tx_stream_data conn.c:312 cwnd limit 7854 reached (2020 + 6400 > 1298304489)
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 3 *4 
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 *3 *5 *7 *8 *9 
2.683   log_pkt pkt.c:187 TX 0x34=Short kyph=0 dcid=000000000000000d nr=5
        enc_ack_frame frame.c:1167 ACK lg=8 delay=124237 (993896 usec) cnt=2 block=0 [8]
        enc_ack_frame frame.c:1160 ACK gap=2 block=0 [4]
        enc_ack_frame frame.c:1160 ACK gap=1 block=0 [1]
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=12a4ed9cf5a250b0
        on_pkt_sent recovery.c:285 in_flight=7901, cwnd=6400, ssthresh=6000, srtt=1.104517, rttvar=0.525296
2.956   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=e5bc828ce04d5cfd nr=2
        dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        dec_frames frame.c:891 PADDING len=15


'ev.h' file not found when compiling

Hi, I got compile error within my macbook:

Scanning dependencies of target quant
[ 38%] Building C object lib/CMakeFiles/quant.dir/src/fnv_1a.c.o
[ 40%] Building C object lib/CMakeFiles/quant.dir/src/pkt.c.o
In file included from /Users/nieyong/quic/quant/lib/src/pkt.c:36:
/Users/yongboy/quic/quant/lib/src/conn.h:28:10: fatal error: 'ev.h' file not found
#include <ev.h>
         ^
1 error generated.
make[2]: *** [lib/CMakeFiles/quant.dir/src/pkt.c.o] Error 1
make[1]: *** [lib/CMakeFiles/quant.dir/all] Error 2

Then, If I copy the /usr/local/Cellar/libev/4.24/include/ev.h file into the /Users/yongboy/quic/quant/lib/include, then got error:

In file included from /Users/nieyong/quic/quant/lib/src/pkt.c:36:
In file included from /Users/nieyong/quic/quant/lib/src/conn.h:28:
/Users/nieyong/quic/quant/lib/include/ev.h:300:3: error: padding struct 'struct ev_watcher' with 4 bytes to align 'data'
      [-Werror,-Wpadded]
  EV_WATCHER (ev_watcher)
  ^
/Users/nieyong/quic/quant/lib/include/ev.h:286:3: note: expanded from macro 'EV_WATCHER'
  EV_COMMON /* rw */                            \
  ^
/Users/nieyong/quic/quant/lib/include/ev.h:245:26: note: expanded from macro 'EV_COMMON'
# define EV_COMMON void *data;
                         ^
1 error generated.
make[2]: *** [lib/CMakeFiles/quant.dir/src/pkt.c.o] Error 1
make[1]: *** [lib/CMakeFiles/quant.dir/all] Error 2
make: *** [all] Error 2

Can you give me some advice, thanks :))

Client example missing "-l" parameter

The client example in bin returns the following when using the -l log option:

[belbs@helheim bin]$ ./client -l /tmp/test index.html
./client: invalid option -- 'l'
client [options] URL
[-i interface] interface to run over; default lo
[-s cache] TLS 0-RTT state cache; default /tmp/test
[-l log] log file for TLS keys; default /tmp/quant-tlslog
[-t timeout] idle timeout in seconds; default 1
[-c] verify TLS certificates; default false
[-u] update TLS keys; default false
[-3] send a static H3 request; default false

The problem seems to be located in the client.c file:

while ((ch = getopt(argc, argv, "hi:v:s:t:cu3")) != -1) {

Adding l: to the getopt option string results in correct behaviour.

ABORT: assertion failed / must not TX while draining

This assertion failure occurred while serving multiple HTTP requests in the same QUIC packet. The repro is a little complicated, because it requires the application (the http server) to be slow.

Here are the requests being served:

GET /5

GET /3

GET /index.html

An idle timeout appears to occur while the first request is being served. The happened because I was stepping through the http parser code in the debugger, but in principle I think it could happen because the application is slow for any reason. The server continues to parse requests, however. The second request causes an attempt to send three bytes on the stream, which results in the assertion failure.

Note, I modified line 139 of server.c to the following to cause it not to send the FIN bit after every request, but I don't know if this is relevant:

        q_write(d->s, &out, false);

The complete log output of the server showing the assertion failure follows:

0.032   q_init quic.c:498 quant/socket 0.0.16/dd567715 with libev 4.22 ready
        q_init quic.c:499 submit bug reports at https://github.com/NTAP/quant/issues
0.034   q_init quic.c:521 debug build, storing fuzzer corpus data
        q_bind quic.c:368 binding serv socket on port 4443
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn ? on port 4443 created
        new_conn conn.c:1267 conn ? state conn_clsd -> conn_idle
        q_bind quic.c:370 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
5.446   rx_pkts conn.c:885 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:000000000000000b
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn 0:000000000000000b on port 4443 created
        new_conn conn.c:1267 conn 0:000000000000000b state conn_clsd -> conn_idle
5.446   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok=41 len=1206 nr=0
        rx_pkt conn.c:642 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:891 PADDING len=938
        rx_pkt conn.c:668 conn 0:000000000000000b state conn_idle -> conn_opng
        update_act_scid conn.c:465 hshk switch to scid 0:0d517f54543dc597 for serv conn (was 0:000000000000000b)
        on_ch tls.c:310 	SNI = 
        on_ch tls.c:313 	ALPN = 
        chk_tp tls.c:473 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:485 	initial_max_data = 16384
        chk_tp tls.c:502 	idle_timeout = 60
        chk_tp tls.c:480 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:467 	initial_max_stream_data_uni = 8192
5.449   rx_crypto conn.c:545 conn 0:0d517f54543dc597 state conn_opng -> conn_estb
        tx conn.c:420 data TX on serv conn 0:0d517f54543dc597 strm -4 w/1 pkt in queue
        enc_pkt pkt.c:386 hshk switch to scid 0:85c0f3a0138f35ea for serv conn (was 0:0d517f54543dc597)
        update_act_scid conn.c:465 hshk switch to scid 0:85c0f3a0138f35ea for serv conn (was 0:0d517f54543dc597)
5.449   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea tok=b1a76dd22e647593c3d9f3439abba2086ca4700da3f1fc92f99d72e774ea05f30d517f54543dc597 len=0 nr=0
        enc_ack_frame frame.c:1167 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=97
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:285 in_flight=299, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 
        tx conn.c:420 data TX on serv conn 0:85c0f3a0138f35ea strm -2 w/2 pkts in queue
5.449   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea len=0 nr=0
        enc_padding_frame frame.c:1095 PADDING len=103
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:285 in_flight=1551, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
5.449   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea len=0 nr=1
        enc_padding_frame frame.c:1095 PADDING len=103
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:285 in_flight=1987, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
5.628   log_pkt pkt.c:126 RX len=99 0xfd=Handshake vers=0xff00000f dcid=85c0f3a0138f35ea scid=000000000000000d len=91 nr=0
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=52 [seq]
        dec_frames frame.c:891 PADDING len=15
5.646   on_ld_alarm recovery.c:201 handshake RTX #1 on serv conn 0:85c0f3a0138f35ea
        detect_lost_pkts recovery.c:155 pkt 0 considered lost
        detect_lost_pkts recovery.c:162 in_flight=1688, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:155 pkt 0 considered lost
        detect_lost_pkts recovery.c:162 in_flight=436, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:155 pkt 1 considered lost
        detect_lost_pkts recovery.c:162 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:185 in_flight=0, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx conn.c:420 data TX on serv conn 0:85c0f3a0138f35ea strm -4 w/1 pkt in queue
5.646   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea tok=b1a76dd22e647593c3d9f3439abba2086ca4700da3f1fc92f99d72e774ea05f30d517f54543dc597 len=274 nr=1
        enc_ack_frame frame.c:1167 ACK lg=0 delay=25038 (200304 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=299, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
        tx conn.c:420 data TX on serv conn 0:85c0f3a0138f35ea strm -2 w/2 pkts in queue
5.647   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea len=1228 nr=2
        enc_ack_frame frame.c:1167 ACK lg=0 delay=2310 (18480 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=93
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=1551, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
5.647   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea len=412 nr=3
        enc_ack_frame frame.c:1167 ACK lg=0 delay=2310 (18480 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=92
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
5.647   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=0
        enc_new_token_frame frame.c:1494 NEW_TOKEN len=40 tok=b1a76dd22e647593c3d9f3439abba2086ca4700da3f1fc92f99d72e774ea05f30d517f54543dc597
        enc_new_cid_frame frame.c:1473 NEW_CONNECTION_ID seq=1 len=8 cid=1:8a16169124121401 tok=fb8628610ea262e091c90b89a78fe165
        on_pkt_sent recovery.c:285 in_flight=2082, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
        coalesce pkt.c:218 coalescing 0x31 len 95 behind 0xfd len 735
5.928   log_pkt pkt.c:134 RX len=78 0x35=Short kyph=0 dcid=85c0f3a0138f35ea nr=0
        new_stream stream.c:101 conn 0:85c0f3a0138f35ea strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=0/16384 len=7 coff=7/32768 [seq]
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=2082, cwnd=6000, ssthresh=6000, srtt=0.281837, rttvar=0.140919
        dec_frames frame.c:903 addtl stream or crypto frame at pos 29, copy
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=7/16384 len=8 coff=15/32768 [seq]
        dec_frames frame.c:903 addtl stream or crypto frame at pos 41, copy
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=15/16384 len=17 coff=32/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
        rx conn.c:1023 q_rx_ready(0, 0) done, exiting event loop
        q_rx_ready quic.c:657 serv conn 0:85c0f3a0138f35ea ready to rx
        q_read quic.c:318 non-blocking read on serv conn 0:85c0f3a0138f35ea
        q_read quic.c:342 read 32 bytes on serv conn 0:85c0f3a0138f35ea strm 4
26.422   serve_cb server.c:110 conn 0:85c0f3a0138f35ea str 4 serving URL /5
         q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:85c0f3a0138f35ea strm 4 
         tx conn.c:420 data TX on serv conn 0:85c0f3a0138f35ea strm -4 w/1 pkt in queue
26.422   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea tok= len=274 nr=2
         enc_ack_frame frame.c:1167 ACK lg=0 delay=2622036 (20976288 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=90
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=2286, cwnd=6000, ssthresh=6000, srtt=0.281837, rttvar=0.140919
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
         tx conn.c:420 data TX on serv conn 0:85c0f3a0138f35ea strm -2 w/2 pkts in queue
26.422   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea len=1228 nr=4
         enc_ack_frame frame.c:1167 ACK lg=0 delay=2599308 (20794464 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=91
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=3538, cwnd=6000, ssthresh=6000, srtt=0.281837, rttvar=0.140919
26.422   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=85c0f3a0138f35ea len=412 nr=5
         enc_ack_frame frame.c:1167 ACK lg=0 delay=2599308 (20794464 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=90
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=3974, cwnd=6000, ssthresh=6000, srtt=0.281837, rttvar=0.140919
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 
         tx conn.c:420 data TX on serv conn 0:85c0f3a0138f35ea strm 4 w/1 pkt in queue
26.422   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=1
         enc_ack_frame frame.c:1167 ACK lg=0 delay=2561768 (20494144 usec) cnt=0 block=0 [0]
         enc_max_stream_id_frame frame.c:1347 MAX_STREAM_ID max=8
         enc_padding_frame frame.c:1095 PADDING len=28
         log_stream_or_crypto_frame frame.c:111 STREAM 0x12=LEN id=4/8 off=0/8192 len=5 coff=0/16384 
         on_pkt_sent recovery.c:285 in_flight=4043, cwnd=6000, ssthresh=6000, srtt=0.281837, rttvar=0.140919
         tx_stream_data conn.c:312 cwnd limit 4043 reached (2020 + 6000 > 1433677289)
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
         log_sent_pkts conn.c:227 epoch 1/3 unacked: *1 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 
         coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
         coalesce pkt.c:218 coalescing 0x32 len 69 behind 0xfd len 735
         idle_alarm conn.c:1150 idle timeout on serv conn 0:85c0f3a0138f35ea
         idle_alarm conn.c:1152 conn 0:85c0f3a0138f35ea state conn_estb -> conn_drng
         enter_closing conn.c:1133 closing/draining alarm in 1.409186 sec on serv conn 0:85c0f3a0138f35ea
26.423   log_pkt pkt.c:126 RX len=59 0xfd=Handshake vers=0xff00000f dcid=85c0f3a0138f35ea scid=000000000000000d len=51 nr=1
         dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6000, ssthresh=6000, srtt=2.868644, rttvar=5.279303
         on_pkt_acked recovery.c:461 0 was RTX'ed as 4
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6000, ssthresh=6000, srtt=5.132100, rttvar=8.486389
         on_pkt_acked recovery.c:461 1 was RTX'ed as 5
         dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6000, ssthresh=6000, srtt=7.087586, rttvar=10.275763
         on_pkt_acked recovery.c:461 3 was RTX'ed as 5
         dec_frames frame.c:891 PADDING len=15
26.423   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=85c0f3a0138f35ea scid=000000000000000d len=41 nr=3
         dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6087, ssthresh=6000, srtt=8.798635, rttvar=11.128921
         on_pkt_acked recovery.c:461 2 was RTX'ed as 4
         dec_frames frame.c:891 PADDING len=15
26.423   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=85c0f3a0138f35ea scid=000000000000000d tok= len=1207 nr=4
         dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6333, ssthresh=6000, srtt=10.320843, rttvar=11.391105
         on_pkt_acked recovery.c:461 0 was RTX'ed as 2
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6333, ssthresh=6000, srtt=11.627735, rttvar=11.157114
         on_pkt_acked recovery.c:461 1 was RTX'ed as 2
         dec_frames frame.c:891 PADDING len=1176
         rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
26.424   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=85c0f3a0138f35ea nr=2
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=32/16384 len=1 coff=33/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
26.710   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
26.710   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=85c0f3a0138f35ea nr=3
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=4043, cwnd=6333, ssthresh=6000, srtt=10.210313, rttvar=11.202680
         on_pkt_acked recovery.c:474 stream 4 fully acked
         on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
         dec_frames frame.c:891 PADDING len=15
         q_write quic.c:302 wrote 5 bytes on serv conn 0:85c0f3a0138f35ea strm 4 
195.094   serve_cb server.c:110 conn 0:85c0f3a0138f35ea str 4 serving URL /3
          q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:85c0f3a0138f35ea strm 4 
195.095   tx conn.c:390 ABORT: assertion failed 
        c->state != conn_drng 
        must not TX while draining [errno 17 = File exists]
        /usr/lib/x86_64-linux-gnu/libasan.so.4(+0x558c0) [0x7ffff6e6f8c0]
        util_die at /home/mcmillan/projects/quant/Debug/external/warp-prefix/src/warp/lib/src/util.c:224
        tx at /home/mcmillan/projects/quant/lib/src/conn.c:392
        tx_w at /home/mcmillan/projects/quant/lib/src/conn.c:459
        /usr/lib/x86_64-linux-gnu/libev.so.4(ev_invoke_pending+0x53) [0x7ffff5fead73]
        /usr/lib/x86_64-linux-gnu/libev.so.4(ev_run+0x9ee) [0x7ffff5fee3de]
        do_write at /home/mcmillan/projects/quant/lib/src/quic.c:198 (discriminator 2)
        q_write at /home/mcmillan/projects/quant/lib/src/quic.c:300
        serve_cb at /home/mcmillan/projects/quant/bin/server.c:140
        /usr/local/lib/libhttp_parser.so.2.8(http_parser_execute+0x17b5) [0x7ffff6c11e4a]
        main at /home/mcmillan/projects/quant/bin/server.c:277
        /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7ffff4ce1b97]
        _start at ??:?


PATH_CHALLENGE continues while connection in closed state.

This server log shows a case where the client stops communicating. The connection enters the draining and then closed states after an idle timeout, however the server continues to send ACK and PATH_CHALLENGE frames. This first occurs at 88.046, and subsequently at increasing intervals. To obtain this trace, server.c was modified to use blocking read rather than non-blocking, allowing it to continue to serve requests. The likely cause seems to be that alarms were not cancelled when the connection entered the closed state.


0.033   q_init quic.c:498 quant/socket 0.0.16/dd567715 with libev 4.22 ready
        q_init quic.c:499 submit bug reports at https://github.com/NTAP/quant/issues
0.035   q_init quic.c:521 debug build, storing fuzzer corpus data
        q_bind quic.c:368 binding serv socket on port 4443
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn ? on port 4443 created
        new_conn conn.c:1267 conn ? state conn_clsd -> conn_idle
        q_bind quic.c:370 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
6.796   rx_pkts conn.c:885 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:000000000000000b
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn 0:000000000000000b on port 4443 created
        new_conn conn.c:1267 conn 0:000000000000000b state conn_clsd -> conn_idle
6.796   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok=41 len=1206 nr=0
        rx_pkt conn.c:642 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:891 PADDING len=938
        rx_pkt conn.c:668 conn 0:000000000000000b state conn_idle -> conn_opng
        update_act_scid conn.c:465 hshk switch to scid 0:30aa468816f6a3ed for serv conn (was 0:000000000000000b)
        on_ch tls.c:310 	SNI = 
        on_ch tls.c:313 	ALPN = 
        chk_tp tls.c:473 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:485 	initial_max_data = 16384
        chk_tp tls.c:502 	idle_timeout = 60
        chk_tp tls.c:480 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:467 	initial_max_stream_data_uni = 8192
6.799   rx_crypto conn.c:545 conn 0:30aa468816f6a3ed state conn_opng -> conn_estb
        tx conn.c:420 data TX on serv conn 0:30aa468816f6a3ed strm -4 w/1 pkt in queue
        enc_pkt pkt.c:386 hshk switch to scid 0:a8568fc91d97d1fd for serv conn (was 0:30aa468816f6a3ed)
        update_act_scid conn.c:465 hshk switch to scid 0:a8568fc91d97d1fd for serv conn (was 0:30aa468816f6a3ed)
6.799   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd tok=f9cefc91c0cc13c6dd4ab05f7b4374ebd56501a7cfd9e2c497437d1a3f1bcc6230aa468816f6a3ed len=0 nr=0
        enc_ack_frame frame.c:1167 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=97
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:285 in_flight=299, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -2 w/2 pkts in queue
6.799   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=0 nr=0
        enc_padding_frame frame.c:1095 PADDING len=103
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:285 in_flight=1551, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
6.800   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=0 nr=1
        enc_padding_frame frame.c:1095 PADDING len=103
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:285 in_flight=1987, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
6.979   log_pkt pkt.c:126 RX len=99 0xfd=Handshake vers=0xff00000f dcid=a8568fc91d97d1fd scid=000000000000000d len=91 nr=0
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=52 [seq]
        dec_frames frame.c:891 PADDING len=15
6.996   on_ld_alarm recovery.c:201 handshake RTX #1 on serv conn 0:a8568fc91d97d1fd
        detect_lost_pkts recovery.c:155 pkt 0 considered lost
        detect_lost_pkts recovery.c:162 in_flight=1688, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:155 pkt 0 considered lost
        detect_lost_pkts recovery.c:162 in_flight=436, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:155 pkt 1 considered lost
        detect_lost_pkts recovery.c:162 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        detect_lost_pkts recovery.c:185 in_flight=0, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -4 w/1 pkt in queue
6.996   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd tok=f9cefc91c0cc13c6dd4ab05f7b4374ebd56501a7cfd9e2c497437d1a3f1bcc6230aa468816f6a3ed len=274 nr=1
        enc_ack_frame frame.c:1167 ACK lg=0 delay=25065 (200520 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=299, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -2 w/2 pkts in queue
6.997   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=1228 nr=2
        enc_ack_frame frame.c:1167 ACK lg=0 delay=2183 (17464 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=93
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=1551, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
6.997   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=412 nr=3
        enc_ack_frame frame.c:1167 ACK lg=0 delay=2183 (17464 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=92
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
6.997   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=0
        enc_new_token_frame frame.c:1494 NEW_TOKEN len=40 tok=f9cefc91c0cc13c6dd4ab05f7b4374ebd56501a7cfd9e2c497437d1a3f1bcc6230aa468816f6a3ed
        enc_new_cid_frame frame.c:1473 NEW_CONNECTION_ID seq=1 len=8 cid=1:830adfebe95d433f tok=6cec953c2e2538fe45bb2f1e88a5fc05
        on_pkt_sent recovery.c:285 in_flight=2082, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
        coalesce pkt.c:218 coalescing 0x35 len 95 behind 0xfd len 735
7.118   log_pkt pkt.c:134 RX len=40 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=0
        new_stream stream.c:101 conn 0:a8568fc91d97d1fd strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=0/16384 len=7 coff=7/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
        rx conn.c:1023 q_rx_ready(0, 0) done, exiting event loop
        q_rx_ready quic.c:657 serv conn 0:a8568fc91d97d1fd ready to rx
        q_read quic.c:318 blocking read on serv conn 0:a8568fc91d97d1fd
        q_read quic.c:342 read 7 bytes on serv conn 0:a8568fc91d97d1fd strm 4
        serve_cb server.c:110 conn 0:a8568fc91d97d1fd str 4 serving URL /5
        q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:a8568fc91d97d1fd strm 4 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -4 w/1 pkt in queue
7.118   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd tok= len=274 nr=2
        enc_ack_frame frame.c:1167 ACK lg=0 delay=40317 (322536 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=2381, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -2 w/2 pkts in queue
7.118   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=1228 nr=4
        enc_ack_frame frame.c:1167 ACK lg=0 delay=17435 (139480 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=91
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=3633, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
7.119   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=412 nr=5
        enc_ack_frame frame.c:1167 ACK lg=0 delay=17435 (139480 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=4069, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx_stream_data conn.c:312 cwnd limit 4069 reached (2020 + 6000 > 3774438889)
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm 4 w/1 pkt in queue
7.119   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=1
        enc_ack_frame frame.c:1167 ACK lg=0 delay=60 (480 usec) cnt=0 block=0 [0]
        enc_max_stream_id_frame frame.c:1347 MAX_STREAM_ID max=8
        enc_padding_frame frame.c:1095 PADDING len=31
        log_stream_or_crypto_frame frame.c:111 STREAM 0x12=LEN id=4/8 off=0/8192 len=5 coff=0/16384 
        on_pkt_sent recovery.c:285 in_flight=4138, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx_stream_data conn.c:312 cwnd limit 4138 reached (2020 + 6000 > 3774438889)
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 
        coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
        coalesce pkt.c:218 coalescing 0x30 len 69 behind 0xfd len 735
7.519   on_ld_alarm recovery.c:201 handshake RTX #2 on serv conn 0:a8568fc91d97d1fd
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -4 w/1 pkt in queue
7.519   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd tok= len=274 nr=3
        enc_ack_frame frame.c:1167 ACK lg=0 delay=90368 (722944 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=90
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=4437, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx_stream_data conn.c:312 cwnd limit 4437 reached (2020 + 6000 > 3774438889)
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -2 w/2 pkts in queue
7.519   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd len=1228 nr=6
        enc_ack_frame frame.c:1167 ACK lg=0 delay=67486 (539888 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1095 PADDING len=91
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=5689, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
        tx_stream_data conn.c:312 cwnd limit 5689 reached (2020 + 6000 > 3774438889)
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 *6 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm 4 w/1 pkt in queue
        tx_stream_data conn.c:285 skip non-lost TX'ed pkt 1
        log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 *4 *5 *6 
7.852   log_pkt pkt.c:126 RX len=74 0xfd=Handshake vers=0xff00000f dcid=a8568fc91d97d1fd scid=000000000000000d len=66 nr=1
        dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        update_rtt recovery.c:319 in_flight=5689, cwnd=6000, ssthresh=6000, srtt=0.855597, rttvar=0.427798
        on_pkt_acked recovery.c:461 2 was RTX'ed as 6
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=5689, cwnd=6250, ssthresh=6000, srtt=0.880662, rttvar=0.370980
        on_pkt_acked recovery.c:461 0 was RTX'ed as 6
        dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
        update_rtt recovery.c:319 in_flight=5689, cwnd=6250, ssthresh=6000, srtt=0.862277, rttvar=0.315005
        on_pkt_acked recovery.c:461 4 was RTX'ed as 6
        dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
        update_rtt recovery.c:319 in_flight=5689, cwnd=6490, ssthresh=6000, srtt=0.861442, rttvar=0.237924
        on_pkt_acked recovery.c:461 3 was RTX'ed as 5
        dec_ack_frame frame.c:388 ACK lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
        update_rtt recovery.c:319 in_flight=5689, cwnd=6570, ssthresh=6000, srtt=0.845459, rttvar=0.210409
        dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
        update_rtt recovery.c:319 in_flight=5689, cwnd=6649, ssthresh=6000, srtt=0.781423, rttvar=0.285878
        on_pkt_acked recovery.c:474 stream -2 fully acked
        dec_frames frame.c:891 PADDING len=15
8.001   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
8.001   log_pkt pkt.c:134 RX len=41 0x37=Short kyph=0 dcid=a8568fc91d97d1fd nr=1
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=7/16384 len=8 coff=15/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
8.026   ack_alarm pn.c:56 ACK timer fired on serv conn 0:a8568fc91d97d1fd epoch 3
8.026   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=2
        enc_ack_frame frame.c:1153 ACK lg=1 delay=3171 (25368 usec) cnt=0 block=1 [0..1]
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=2a442af1e5197acc
        on_pkt_sent recovery.c:285 in_flight=5730, cwnd=6874, ssthresh=6000, srtt=0.781423, rttvar=0.285878
8.256   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
8.256   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=a8568fc91d97d1fd scid=000000000000000d tok= len=1207 nr=1
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=5730, cwnd=6874, ssthresh=6000, srtt=0.866305, rttvar=0.384171
        on_pkt_acked recovery.c:461 0 was RTX'ed as 3
        dec_frames frame.c:891 PADDING len=1181
8.496   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=a8568fc91d97d1fd scid=000000000000000d tok=3d len=1206 nr=8
        dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        update_rtt recovery.c:319 in_flight=5730, cwnd=6874, ssthresh=6000, srtt=0.930174, rttvar=0.415866
        on_pkt_acked recovery.c:461 2 was RTX'ed as 3
        dec_frames frame.c:891 PADDING len=1180
8.753   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=8
        dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        update_rtt recovery.c:319 in_flight=5730, cwnd=6926, ssthresh=6000, srtt=1.018230, rttvar=0.488012
        on_pkt_acked recovery.c:474 stream 4 fully acked
        on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
        dec_frames frame.c:891 PADDING len=15
        q_write quic.c:302 wrote 5 bytes on serv conn 0:a8568fc91d97d1fd strm 4 
        q_read quic.c:318 blocking read on serv conn 0:a8568fc91d97d1fd
        q_read quic.c:342 read 8 bytes on serv conn 0:a8568fc91d97d1fd strm 4
        serve_cb server.c:110 conn 0:a8568fc91d97d1fd str 4 serving URL /3
        q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:a8568fc91d97d1fd strm 4 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm -4 w/1 pkt in queue
8.754   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=a8568fc91d97d1fd tok= len=274 nr=4
        enc_padding_frame frame.c:1095 PADDING len=98
        log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:285 in_flight=5960, cwnd=6926, ssthresh=6000, srtt=1.018230, rttvar=0.488012
        tx_stream_data conn.c:312 cwnd limit 5960 reached (2020 + 6926 > 3774438889)
        log_sent_pkts conn.c:227 epoch 0 unacked: *1 *3 *4 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 2 
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 
        tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm 4 w/1 pkt in queue
8.754   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=3
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=9178aa86d76179ae
        enc_padding_frame frame.c:1095 PADDING len=29
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=5/8192 len=3 coff=5/16384 
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=9178aa86d76179ae
        on_pkt_sent recovery.c:285 in_flight=6036, cwnd=6926, ssthresh=6000, srtt=1.018230, rttvar=0.488012
        tx_stream_data conn.c:312 cwnd limit 6036 reached (2020 + 6926 > 3774438889)
        log_sent_pkts conn.c:227 epoch 0 unacked: *1 *3 *4 
        log_sent_pkts conn.c:227 epoch 1/3 unacked: 0 2 *3 
        log_sent_pkts conn.c:227 epoch 2 unacked: *1 
8.754   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=4
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=9178aa86d76179ae
        on_pkt_sent recovery.c:285 in_flight=6071, cwnd=6926, ssthresh=6000, srtt=1.018230, rttvar=0.488012
9.070   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
9.070   log_pkt pkt.c:134 RX len=55 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=9
        dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        update_rtt recovery.c:319 in_flight=6071, cwnd=6926, ssthresh=6000, srtt=1.150154, rttvar=0.629856
        log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=15/16384 len=17 coff=32/32768 [seq]
        dec_frames frame.c:891 PADDING len=15
9.095   ack_alarm pn.c:56 ACK timer fired on serv conn 0:a8568fc91d97d1fd epoch 3
9.095   log_pkt pkt.c:187 TX 0x33=Short kyph=0 dcid=000000000000000d nr=5
        enc_ack_frame frame.c:1153 ACK lg=9 delay=3183 (25464 usec) cnt=1 block=1 [8..9]
        enc_ack_frame frame.c:1160 ACK gap=5 block=0 [1]
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=5f46c569babd55e5
        on_pkt_sent recovery.c:285 in_flight=6019, cwnd=6926, ssthresh=6000, srtt=1.150154, rttvar=0.629856
9.595   log_pkt pkt.c:134 RX len=48 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=5
        dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        update_rtt recovery.c:319 in_flight=6019, cwnd=6926, ssthresh=6000, srtt=1.202565, rttvar=0.577215
        dec_path_response_frame frame.c:732 PATH_RESPONSE data=2a442af1e5197acc
        dec_ack_frame frame.c:388 ACK lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
        update_rtt recovery.c:319 in_flight=5978, cwnd=6933, ssthresh=6000, srtt=1.114745, rttvar=0.608552
        dec_frames frame.c:891 PADDING len=15
9.621   ack_alarm pn.c:56 ACK timer fired on serv conn 0:a8568fc91d97d1fd epoch 3
9.621   log_pkt pkt.c:187 TX 0x33=Short kyph=0 dcid=000000000000000d nr=6
        enc_ack_frame frame.c:1167 ACK lg=5 delay=3190 (25520 usec) cnt=0 block=0 [5]
        enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=5f46c569babd55e5
        on_pkt_sent recovery.c:285 in_flight=5976, cwnd=6940, ssthresh=6000, srtt=1.114745, rttvar=0.608552
9.962   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
9.962   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=a8568fc91d97d1fd scid=000000000000000d len=41 nr=5
        dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        update_rtt recovery.c:319 in_flight=5976, cwnd=6940, ssthresh=6000, srtt=1.371154, rttvar=0.969232
        on_pkt_acked recovery.c:461 1 was RTX'ed as 5
        dec_frames frame.c:891 PADDING len=15
10.739   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=a8568fc91d97d1fd scid=000000000000000d tok=f98a len=1205 nr=5
         dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         update_rtt recovery.c:319 in_flight=5976, cwnd=6940, ssthresh=6000, srtt=1.602332, rttvar=1.189281
         on_pkt_acked recovery.c:461 3 was RTX'ed as 4
         dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
         update_rtt recovery.c:319 in_flight=5976, cwnd=6991, ssthresh=6000, srtt=1.650258, rttvar=0.987813
         on_pkt_acked recovery.c:474 stream -4 fully acked
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=5976, cwnd=7042, ssthresh=6000, srtt=1.911852, rttvar=1.264046
         on_pkt_acked recovery.c:461 1 was RTX'ed as 4
         dec_frames frame.c:891 PADDING len=1169
11.341   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
11.341   log_pkt pkt.c:134 RX len=39 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=7
         dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
         update_rtt recovery.c:319 in_flight=5976, cwnd=7042, ssthresh=6000, srtt=1.887828, rttvar=0.996082
         detect_lost_pkts recovery.c:155 pkt 3 considered lost
         detect_lost_pkts recovery.c:162 in_flight=5859, cwnd=7048, ssthresh=6000, srtt=1.887828, rttvar=0.996082
         detect_lost_pkts recovery.c:155 pkt 4 considered lost
         detect_lost_pkts recovery.c:162 in_flight=5824, cwnd=7048, ssthresh=6000, srtt=1.887828, rttvar=0.996082
         detect_lost_pkts recovery.c:185 in_flight=5824, cwnd=3524, ssthresh=3524, srtt=1.887828, rttvar=0.996082
         dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         update_rtt recovery.c:319 in_flight=5824, cwnd=3524, ssthresh=3524, srtt=1.975227, rttvar=0.921858
         on_pkt_acked recovery.c:474 stream 4 fully acked
         on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
         dec_frames frame.c:891 PADDING len=15
11.341   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=7
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=a5a3a3060baef581
         on_pkt_sent recovery.c:285 in_flight=5859, cwnd=3524, ssthresh=3524, srtt=1.975227, rttvar=0.921858
         q_write quic.c:302 wrote 3 bytes on serv conn 0:a8568fc91d97d1fd strm 4 
         q_read quic.c:318 blocking read on serv conn 0:a8568fc91d97d1fd
         q_read quic.c:342 read 17 bytes on serv conn 0:a8568fc91d97d1fd strm 4
         serve_cb server.c:110 conn 0:a8568fc91d97d1fd str 4 serving URL /index.html
         q_write quic.c:288 writing 4 bytes in 1 buf on serv conn 0:a8568fc91d97d1fd strm 4 
         tx conn.c:420 data TX on serv conn 0:a8568fc91d97d1fd strm 4 w/1 pkt in queue
11.341   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=8
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=a5a3a3060baef581
         enc_padding_frame frame.c:1095 PADDING len=29
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=8/8192 len=4 coff=8/16384 
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=a5a3a3060baef581
         on_pkt_sent recovery.c:285 in_flight=5936, cwnd=3524, ssthresh=3524, srtt=1.975227, rttvar=0.921858
         tx_stream_data conn.c:312 cwnd limit 5936 reached (2020 + 3524 > 3774438889)
         log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 *8 
11.341   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=9
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=a5a3a3060baef581
         on_pkt_sent recovery.c:285 in_flight=5971, cwnd=3524, ssthresh=3524, srtt=1.975227, rttvar=0.921858
11.776   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
11.776   log_pkt pkt.c:134 RX len=43 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=3
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=9178aa86d76179ae
         dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
         dec_frames frame.c:891 PADDING len=15
11.801   ack_alarm pn.c:56 ACK timer fired on serv conn 0:a8568fc91d97d1fd epoch 3
11.801   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=10
         enc_ack_frame frame.c:1167 ACK lg=7 delay=57608 (460864 usec) cnt=1 block=0 [7]
         enc_ack_frame frame.c:1160 ACK gap=2 block=0 [3]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=17351788960d32fc
         on_pkt_sent recovery.c:285 in_flight=6016, cwnd=3524, ssthresh=3524, srtt=1.975227, rttvar=0.921858
12.308   log_pkt pkt.c:134 RX len=48 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=4
         dec_ack_frame frame.c:388 ACK lg=7 delay=0 (0 usec) cnt=0 block=0 [7]
         update_rtt recovery.c:319 in_flight=6016, cwnd=3524, ssthresh=3524, srtt=1.849220, rttvar=0.943406
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=5f46c569babd55e5
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=32/16384 len=1 coff=33/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
12.333   ack_alarm pn.c:56 ACK timer fired on serv conn 0:a8568fc91d97d1fd epoch 3
12.333   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=11
         enc_ack_frame frame.c:1167 ACK lg=7 delay=124083 (992664 usec) cnt=1 block=0 [7]
         enc_ack_frame frame.c:1144 ACK gap=1 block=1 [3..4]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=17351788960d32fc
         on_pkt_sent recovery.c:285 in_flight=6026, cwnd=3535, ssthresh=3524, srtt=1.849220, rttvar=0.943406
13.455   log_pkt pkt.c:134 RX len=71 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=6
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=17351788960d32fc
         dec_ack_frame frame.c:388 ACK lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
         update_rtt recovery.c:319 in_flight=6026, cwnd=3535, ssthresh=3524, srtt=1.882253, rttvar=0.773620
         on_pkt_acked recovery.c:474 stream 4 fully acked
         on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
         dec_ack_frame frame.c:388 ACK lg=9 delay=0 (0 usec) cnt=0 block=0 [9]
         update_rtt recovery.c:319 in_flight=5949, cwnd=3561, ssthresh=3524, srtt=1.911157, rttvar=0.638023
         dec_ack_frame frame.c:388 ACK lg=10 delay=0 (0 usec) cnt=0 block=0 [10]
         update_rtt recovery.c:319 in_flight=5914, cwnd=3572, ssthresh=3524, srtt=1.878946, rttvar=0.542939
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=a5a3a3060baef581
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=17351788960d32fc
         dec_frames frame.c:891 PADDING len=15
         q_write quic.c:302 wrote 4 bytes on serv conn 0:a8568fc91d97d1fd strm 4 
         q_read quic.c:318 blocking read on serv conn 0:a8568fc91d97d1fd
         q_read quic.c:342 read 1 byte on serv conn 0:a8568fc91d97d1fd strm 4
         q_read quic.c:318 blocking read on serv conn 0:a8568fc91d97d1fd
         q_read quic.c:331 waiting for data on any stream on serv conn 0:a8568fc91d97d1fd
13.481   ack_alarm pn.c:56 ACK timer fired on serv conn 0:a8568fc91d97d1fd epoch 3
13.481   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=12
         enc_ack_frame frame.c:1167 ACK lg=6 delay=267514 (2140112 usec) cnt=1 block=0 [6]
         enc_ack_frame frame.c:1160 ACK gap=0 block=0 [4]
14.022   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=10
         dec_ack_frame frame.c:388 ACK lg=11 delay=0 (0 usec) cnt=0 block=0 [11]
         update_rtt recovery.c:319 in_flight=5869, cwnd=3587, ssthresh=3524, srtt=1.855186, rttvar=0.454724
         dec_frames frame.c:891 PADDING len=15
14.601   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=a8568fc91d97d1fd nr=12
         dec_ack_frame frame.c:388 ACK lg=12 delay=0 (0 usec) cnt=0 block=0 [12]
         update_rtt recovery.c:319 in_flight=5824, cwnd=3602, ssthresh=3524, srtt=1.763346, rttvar=0.524723
         dec_frames frame.c:891 PADDING len=15
17.273   on_ld_alarm recovery.c:214 TLP alarm #0 on serv conn 0:a8568fc91d97d1fd
19.942   on_ld_alarm recovery.c:214 TLP alarm #1 on serv conn 0:a8568fc91d97d1fd
22.613   on_ld_alarm recovery.c:220 RTO alarm #0 on serv conn 0:a8568fc91d97d1fd
24.602   idle_alarm conn.c:1150 idle timeout on serv conn 0:a8568fc91d97d1fd
         idle_alarm conn.c:1152 conn 0:a8568fc91d97d1fd state conn_estb -> conn_drng
         enter_closing conn.c:1133 closing/draining alarm in 7.388930 sec on serv conn 0:a8568fc91d97d1fd
31.994   enter_closed conn.c:1080 conn 0:a8568fc91d97d1fd state conn_drng -> conn_clsd
         enter_closed conn.c:1083 <any>(c, 0) done, exiting event loop
         q_close quic.c:548 closing serv conn 0:a8568fc91d97d1fd on port 4443
         free_stream stream.c:132 freeing strm 4 on serv conn 0:a8568fc91d97d1fd
^[[B^Cmcmillan@kenmcmil-z420:~/projects/ivy/doc/examples/quic$ ~/projects/quant/Debug/binr -d . -c leaf_cert.pem -k leaf_cert.key -p 4443 -t 3600
0.032   q_init quic.c:498 quant/socket 0.0.16/dd567715 with libev 4.22 ready
        q_init quic.c:499 submit bug reports at https://github.com/NTAP/quant/issues
0.034   q_init quic.c:521 debug build, storing fuzzer corpus data
        q_bind quic.c:368 binding serv socket on port 4443
        init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
        new_conn conn.c:1265 serv conn ? on port 4443 created
        new_conn conn.c:1267 conn ? state conn_clsd -> conn_idle
        q_bind quic.c:370 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
43.308   rx_pkts conn.c:885 new serv conn on port 4443 from 127.0.0.1:4988 w/cid=0:000000000000000b
         init_rec recovery.c:527 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
         new_conn conn.c:1265 serv conn 0:000000000000000b on port 4443 created
         new_conn conn.c:1267 conn 0:000000000000000b state conn_clsd -> conn_idle
43.308   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=000000000000000b scid=000000000000000d tok=41 len=1206 nr=0
         rx_pkt conn.c:642 supporting clnt-requested vers 0xff00000f
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=243 [seq]
         dec_frames frame.c:891 PADDING len=938
         rx_pkt conn.c:668 conn 0:000000000000000b state conn_idle -> conn_opng
         update_act_scid conn.c:465 hshk switch to scid 0:bc2a8b55c24a69f4 for serv conn (was 0:000000000000000b)
         on_ch tls.c:310 	SNI = 
         on_ch tls.c:313 	ALPN = 
         chk_tp tls.c:473 	initial_max_stream_data_bidi_local = 8192
         chk_tp tls.c:485 	initial_max_data = 16384
         chk_tp tls.c:502 	idle_timeout = 60
         chk_tp tls.c:480 	initial_max_stream_data_bidi_remote = 8192
         chk_tp tls.c:467 	initial_max_stream_data_uni = 8192
43.311   rx_crypto conn.c:545 conn 0:bc2a8b55c24a69f4 state conn_opng -> conn_estb
         tx conn.c:420 data TX on serv conn 0:bc2a8b55c24a69f4 strm -4 w/1 pkt in queue
         enc_pkt pkt.c:386 hshk switch to scid 0:b36f8a94f3928b6f for serv conn (was 0:bc2a8b55c24a69f4)
         update_act_scid conn.c:465 hshk switch to scid 0:b36f8a94f3928b6f for serv conn (was 0:bc2a8b55c24a69f4)
43.311   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f tok=8103ab0d5934577e2e205390d56dc7091fce0deedfe40b4782188997c9140b33bc2a8b55c24a69f4 len=0 nr=0
         enc_ack_frame frame.c:1167 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=97
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 
         on_pkt_sent recovery.c:285 in_flight=299, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
43.312   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=0 nr=0
         enc_padding_frame frame.c:1095 PADDING len=103
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 
         on_pkt_sent recovery.c:285 in_flight=1551, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
43.312   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=0 nr=1
         enc_padding_frame frame.c:1095 PADDING len=103
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 
         on_pkt_sent recovery.c:285 in_flight=1987, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
         coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
43.508   on_ld_alarm recovery.c:201 handshake RTX #1 on serv conn 0:b36f8a94f3928b6f
         detect_lost_pkts recovery.c:155 pkt 0 considered lost
         detect_lost_pkts recovery.c:162 in_flight=1688, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
         detect_lost_pkts recovery.c:155 pkt 0 considered lost
         detect_lost_pkts recovery.c:162 in_flight=436, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
         detect_lost_pkts recovery.c:155 pkt 1 considered lost
         detect_lost_pkts recovery.c:162 in_flight=0, cwnd=12000, ssthresh=0, srtt=0.000000, rttvar=0.000000
         detect_lost_pkts recovery.c:185 in_flight=0, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -4 w/1 pkt in queue
43.509   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f tok=8103ab0d5934577e2e205390d56dc7091fce0deedfe40b4782188997c9140b33bc2a8b55c24a69f4 len=274 nr=1
         enc_ack_frame frame.c:1167 ACK lg=0 delay=25088 (200704 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=90
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=299, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
43.509   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=1228 nr=2
         enc_padding_frame frame.c:1095 PADDING len=99
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=1551, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
43.509   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=412 nr=3
         enc_padding_frame frame.c:1095 PADDING len=98
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=1987, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 
         coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
43.543   log_pkt pkt.c:126 RX len=99 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=91 nr=0
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=52 [seq]
         dec_frames frame.c:891 PADDING len=15
43.569   ack_alarm pn.c:56 ACK timer fired on serv conn 0:b36f8a94f3928b6f epoch 2
43.569   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=0 nr=4
         enc_ack_frame frame.c:1167 ACK lg=0 delay=3179 (25432 usec) cnt=0 block=0 [0]
43.682   log_pkt pkt.c:134 RX len=40 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=0
         new_stream stream.c:101 conn 0:b36f8a94f3928b6f strm 4 (bidir, clnt) state strm_idle -> strm_open
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/4 off=0/16384 len=7 coff=7/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
         rx conn.c:1023 q_rx_ready(0, 0) done, exiting event loop
         q_rx_ready quic.c:657 serv conn 0:b36f8a94f3928b6f ready to rx
         q_read quic.c:318 blocking read on serv conn 0:b36f8a94f3928b6f
         q_read quic.c:342 read 7 bytes on serv conn 0:b36f8a94f3928b6f strm 4
         serve_cb server.c:110 conn 0:b36f8a94f3928b6f str 4 serving URL /5
         q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:b36f8a94f3928b6f strm 4 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -4 w/1 pkt in queue
43.682   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f tok=8103ab0d5934577e2e205390d56dc7091fce0deedfe40b4782188997c9140b33bc2a8b55c24a69f4 len=274 nr=2
         enc_ack_frame frame.c:1167 ACK lg=0 delay=46854 (374832 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=90
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=2286, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
43.683   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=1228 nr=5
         enc_ack_frame frame.c:1167 ACK lg=0 delay=17413 (139304 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=91
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=3538, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
43.683   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=412 nr=6
         enc_ack_frame frame.c:1167 ACK lg=0 delay=17413 (139304 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=90
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=1108 len=292 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=3974, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm 4 w/1 pkt in queue
43.683   log_pkt pkt.c:187 TX 0x33=Short kyph=0 dcid=000000000000000d nr=0
         enc_ack_frame frame.c:1167 ACK lg=0 delay=71 (568 usec) cnt=0 block=0 [0]
         enc_max_stream_id_frame frame.c:1347 MAX_STREAM_ID max=8
         enc_padding_frame frame.c:1095 PADDING len=30
         log_stream_or_crypto_frame frame.c:111 STREAM 0x12=LEN id=4/8 off=0/8192 len=5 coff=0/16384 
         enc_new_token_frame frame.c:1494 NEW_TOKEN len=40 tok=8103ab0d5934577e2e205390d56dc7091fce0deedfe40b4782188997c9140b33bc2a8b55c24a69f4
         enc_new_cid_frame frame.c:1473 NEW_CONNECTION_ID seq=1 len=8 cid=1:2991cdad70b0de4e tok=fac7fe86571e273262716c33b28d2b01
         on_pkt_sent recovery.c:285 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.000000, rttvar=0.000000
         tx_stream_data conn.c:312 cwnd limit 4112 reached (2020 + 6000 > 2589240809)
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 
         log_sent_pkts conn.c:227 epoch 1/3 unacked: *0 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 
         coalesce pkt.c:218 coalescing 0xfd len 436 behind 0xff len 299
         coalesce pkt.c:218 coalescing 0x33 len 138 behind 0xfd len 735
43.905   log_pkt pkt.c:134 RX len=34 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=4
         dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         update_rtt recovery.c:319 in_flight=4112, cwnd=6000, ssthresh=6000, srtt=0.222677, rttvar=0.111338
         on_pkt_acked recovery.c:474 stream 4 fully acked
         on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
         dec_frames frame.c:891 PADDING len=15
         q_write quic.c:302 wrote 5 bytes on serv conn 0:b36f8a94f3928b6f strm 4 
         q_read quic.c:318 blocking read on serv conn 0:b36f8a94f3928b6f
         q_read quic.c:331 waiting for data on any stream on serv conn 0:b36f8a94f3928b6f
44.305   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
44.305   log_pkt pkt.c:134 RX len=62 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=6
         dec_stream_or_crypto_frame frame.c:264 q_read(pm[w_iov_idx(v)].stream->c, 0) done, exiting event loop
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=7/16384 len=8 coff=15/32768 [seq]
         dec_frames frame.c:903 addtl stream or crypto frame at pos 25, copy
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=15/16384 len=17 coff=32/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
         q_read quic.c:342 read 25 bytes on serv conn 0:b36f8a94f3928b6f strm 4
         serve_cb server.c:110 conn 0:b36f8a94f3928b6f str 4 serving URL /3
         q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:b36f8a94f3928b6f strm 4 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -4 w/1 pkt in queue
44.306   log_pkt pkt.c:169 TX 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f tok= len=274 nr=3
         enc_ack_frame frame.c:1167 ACK lg=0 delay=124732 (997856 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=90
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=155 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=4273, cwnd=6000, ssthresh=6000, srtt=0.222677, rttvar=0.111338
         tx_stream_data conn.c:312 cwnd limit 4273 reached (2020 + 6000 > 2589240809)
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
44.306   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=1228 nr=7
         enc_ack_frame frame.c:1167 ACK lg=0 delay=95292 (762336 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1095 PADDING len=91
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=5525, cwnd=6000, ssthresh=6000, srtt=0.222677, rttvar=0.111338
         tx_stream_data conn.c:312 cwnd limit 5525 reached (2020 + 6000 > 2589240809)
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 *7 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm 4 w/1 pkt in queue
44.306   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=1
         enc_ack_frame frame.c:1167 ACK lg=6 delay=63 (504 usec) cnt=1 block=0 [6]
         enc_ack_frame frame.c:1160 ACK gap=0 block=0 [4]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=4e0c9f540f3745f
         enc_padding_frame frame.c:1095 PADDING len=22
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=5/8192 len=3 coff=5/16384 
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=4e0c9f540f3745f
         on_pkt_sent recovery.c:285 in_flight=5601, cwnd=6000, ssthresh=6000, srtt=0.222677, rttvar=0.111338
         tx_stream_data conn.c:312 cwnd limit 5601 reached (2020 + 6000 > 2589240809)
         log_sent_pkts conn.c:227 epoch 0 unacked: *0 *1 *2 *3 
         log_sent_pkts conn.c:227 epoch 1/3 unacked: *1 
         log_sent_pkts conn.c:227 epoch 2 unacked: *0 *1 *2 *3 (4) *5 *6 *7 
44.307   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=2
         enc_ack_frame frame.c:1167 ACK lg=6 delay=63 (504 usec) cnt=1 block=0 [6]
         enc_ack_frame frame.c:1160 ACK gap=0 block=0 [4]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=4e0c9f540f3745f
         on_pkt_sent recovery.c:285 in_flight=5643, cwnd=6000, ssthresh=6000, srtt=0.222677, rttvar=0.111338
44.524   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
44.524   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d tok=24 len=1206 nr=2
         dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         update_rtt recovery.c:319 in_flight=5643, cwnd=6000, ssthresh=6000, srtt=0.222195, rttvar=0.084467
         on_pkt_acked recovery.c:474 stream -4 fully acked
         dec_frames frame.c:891 PADDING len=1180
44.704   log_pkt pkt.c:134 RX len=41 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=7
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=32/16384 len=8 coff=40/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
44.729   ack_alarm pn.c:56 ACK timer fired on serv conn 0:b36f8a94f3928b6f epoch 3
44.729   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=3
         enc_ack_frame frame.c:1153 ACK lg=7 delay=3177 (25416 usec) cnt=1 block=1 [6..7]
         enc_ack_frame frame.c:1160 ACK gap=0 block=0 [4]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=2188438b098e5852
         on_pkt_sent recovery.c:285 in_flight=5686, cwnd=6059, ssthresh=6000, srtt=0.222195, rttvar=0.084467
45.087   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d tok=2b39 len=1205 nr=8
         dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         update_rtt recovery.c:319 in_flight=5686, cwnd=6059, ssthresh=6000, srtt=0.416774, rttvar=0.452508
         on_pkt_acked recovery.c:461 0 was RTX'ed as 3
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=5686, cwnd=6059, ssthresh=6000, srtt=0.561942, rttvar=0.629717
         on_pkt_acked recovery.c:461 1 was RTX'ed as 3
         dec_frames frame.c:891 PADDING len=1174
45.387   log_pkt pkt.c:116 RX len=1216 0xff=Initial vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d tok= len=1207 nr=1
         dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
         update_rtt recovery.c:319 in_flight=5686, cwnd=6059, ssthresh=6000, srtt=0.704708, rttvar=0.757819
         on_pkt_acked recovery.c:461 2 was RTX'ed as 3
         dec_frames frame.c:891 PADDING len=1181
45.650   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
45.650   log_pkt pkt.c:134 RX len=38 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=1
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=4e0c9f540f3745f
         dec_frames frame.c:891 PADDING len=15
45.676   ack_alarm pn.c:56 ACK timer fired on serv conn 0:b36f8a94f3928b6f epoch 3
45.676   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=4
         enc_ack_frame frame.c:1153 ACK lg=7 delay=121516 (972128 usec) cnt=2 block=1 [6..7]
         enc_ack_frame frame.c:1160 ACK gap=0 block=0 [4]
         enc_ack_frame frame.c:1160 ACK gap=1 block=0 [1]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=d45fa29de69ea185
         on_pkt_sent recovery.c:285 in_flight=5733, cwnd=6118, ssthresh=6000, srtt=0.704708, rttvar=0.757819
46.155   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
46.155   log_pkt pkt.c:126 RX len=54 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=46 nr=4
         dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
         update_rtt recovery.c:319 in_flight=5733, cwnd=6118, ssthresh=6000, srtt=0.947448, rttvar=1.053844
         on_pkt_acked recovery.c:461 2 was RTX'ed as 7
         dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
         update_rtt recovery.c:319 in_flight=5733, cwnd=6363, ssthresh=6000, srtt=1.152312, rttvar=1.200112
         dec_frames frame.c:891 PADDING len=15
46.347   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
46.347   log_pkt pkt.c:134 RX len=38 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=5
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=2188438b098e5852
         dec_frames frame.c:891 PADDING len=15
46.372   ack_alarm pn.c:56 ACK timer fired on serv conn 0:b36f8a94f3928b6f epoch 3
46.372   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=5
         enc_ack_frame frame.c:1153 ACK lg=7 delay=3174 (25392 usec) cnt=1 block=3 [4..7]
         enc_ack_frame frame.c:1160 ACK gap=1 block=0 [1]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=f0c697cea8021954
         on_pkt_sent recovery.c:285 in_flight=5776, cwnd=6363, ssthresh=6000, srtt=1.152312, rttvar=1.200112
46.714   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
46.714   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=41 nr=8
         dec_ack_frame frame.c:388 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         update_rtt recovery.c:319 in_flight=5776, cwnd=6363, ssthresh=6000, srtt=1.434025, rttvar=1.463510
         on_pkt_acked recovery.c:461 0 was RTX'ed as 7
         dec_frames frame.c:891 PADDING len=15
47.382   log_pkt pkt.c:134 RX len=48 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=2
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=f0c697cea8021954
         dec_ack_frame frame.c:388 ACK lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
         update_rtt recovery.c:319 in_flight=5776, cwnd=6363, ssthresh=6000, srtt=1.467978, rttvar=1.165538
         dec_ack_frame frame.c:388 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
         update_rtt recovery.c:319 in_flight=5729, cwnd=6371, ssthresh=6000, srtt=1.668973, rttvar=1.276143
         dec_frames frame.c:891 PADDING len=15
47.407   ack_alarm pn.c:56 ACK timer fired on serv conn 0:b36f8a94f3928b6f epoch 3
47.407   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=6
         enc_ack_frame frame.c:1167 ACK lg=5 delay=132481 (1059848 usec) cnt=1 block=0 [5]
         enc_ack_frame frame.c:1160 ACK gap=1 block=0 [2]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=158a7c29462709f
         on_pkt_sent recovery.c:285 in_flight=5732, cwnd=6378, ssthresh=6000, srtt=1.668973, rttvar=1.276143
48.633   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
48.633   log_pkt pkt.c:134 RX len=100 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=8
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=40/16384 len=8 coff=48/32768 [seq]
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=158a7c29462709f
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=d45fa29de69ea185
         dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
         update_rtt recovery.c:319 in_flight=5732, cwnd=6378, ssthresh=6000, srtt=1.613649, rttvar=1.067756
         detect_lost_pkts recovery.c:155 pkt 1 considered lost
         detect_lost_pkts recovery.c:162 in_flight=5611, cwnd=6386, ssthresh=6000, srtt=1.613649, rttvar=1.067756
         detect_lost_pkts recovery.c:155 pkt 3 considered lost
         detect_lost_pkts recovery.c:162 in_flight=5568, cwnd=6386, ssthresh=6000, srtt=1.613649, rttvar=1.067756
         detect_lost_pkts recovery.c:155 pkt 5 considered lost
         detect_lost_pkts recovery.c:162 in_flight=5525, cwnd=6386, ssthresh=6000, srtt=1.613649, rttvar=1.067756
         detect_lost_pkts recovery.c:185 in_flight=5525, cwnd=3193, ssthresh=3193, srtt=1.613649, rttvar=1.067756
         dec_ack_frame frame.c:388 ACK lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
         dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=5525, cwnd=3193, ssthresh=3193, srtt=1.952921, rttvar=1.479361
         on_pkt_acked recovery.c:474 stream 4 fully acked
         on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
         dec_frames frame.c:903 addtl stream or crypto frame at pos 63, copy
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=48/16384 len=17 coff=65/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
48.634   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=1228 nr=8
         enc_padding_frame frame.c:1095 PADDING len=99
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=6777, cwnd=3193, ssthresh=3193, srtt=1.952921, rttvar=1.479361
         tx_stream_data conn.c:312 cwnd limit 6777 reached (2020 + 3193 > 2589240809)
         log_sent_pkts conn.c:227 epoch 2 unacked: *1 *3 *5 *6 *7 *8 
48.634   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=7
         enc_ack_frame frame.c:1167 ACK lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=28a1e603098529b5
         on_pkt_sent recovery.c:285 in_flight=6817, cwnd=3193, ssthresh=3193, srtt=1.952921, rttvar=1.479361
         q_write quic.c:302 wrote 3 bytes on serv conn 0:b36f8a94f3928b6f strm 4 
         serve_cb server.c:110 conn 0:b36f8a94f3928b6f str 4 serving URL /index.html
         q_write quic.c:288 writing 4 bytes in 1 buf on serv conn 0:b36f8a94f3928b6f strm 4 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
48.635   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=1228 nr=9
         enc_padding_frame frame.c:1095 PADDING len=99
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=8069, cwnd=3193, ssthresh=3193, srtt=1.952921, rttvar=1.479361
         tx_stream_data conn.c:312 cwnd limit 8069 reached (2020 + 3193 > 2589240809)
         log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 
         log_sent_pkts conn.c:227 epoch 2 unacked: *1 *3 *5 *6 *7 *8 *9 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm 4 w/1 pkt in queue
48.635   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=8
         enc_ack_frame frame.c:1167 ACK lg=8 delay=160 (1280 usec) cnt=0 block=0 [8]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=28a1e603098529b5
         enc_padding_frame frame.c:1095 PADDING len=23
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=8/8192 len=4 coff=8/16384 
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=28a1e603098529b5
         on_pkt_sent recovery.c:285 in_flight=8146, cwnd=3193, ssthresh=3193, srtt=1.952921, rttvar=1.479361
         tx_stream_data conn.c:312 cwnd limit 8146 reached (2020 + 3193 > 2589240809)
         log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 *8 
         log_sent_pkts conn.c:227 epoch 2 unacked: *1 *3 *5 *6 *7 *8 *9 
48.635   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=9
         enc_ack_frame frame.c:1167 ACK lg=8 delay=160 (1280 usec) cnt=0 block=0 [8]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=28a1e603098529b5
         on_pkt_sent recovery.c:285 in_flight=8187, cwnd=3193, ssthresh=3193, srtt=1.952921, rttvar=1.479361
49.109   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
49.109   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=41 nr=12
         dec_ack_frame frame.c:388 ACK lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         update_rtt recovery.c:319 in_flight=8187, cwnd=3193, ssthresh=3193, srtt=2.408923, rttvar=2.021525
         on_pkt_acked recovery.c:461 3 was RTX'ed as 6
         dec_frames frame.c:891 PADDING len=15
49.326   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
49.326   log_pkt pkt.c:134 RX len=42 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=12
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=65/16384 len=8 coff=73/32768 [seq]
         dec_frames frame.c:891 PADDING len=15
49.352   ack_alarm pn.c:56 ACK timer fired on serv conn 0:b36f8a94f3928b6f epoch 3
49.352   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=10
         enc_ack_frame frame.c:1167 ACK lg=12 delay=3178 (25424 usec) cnt=1 block=0 [12]
         enc_ack_frame frame.c:1160 ACK gap=2 block=0 [8]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=5edeac6d8150d29f
         on_pkt_sent recovery.c:285 in_flight=8230, cwnd=3193, ssthresh=3193, srtt=2.408923, rttvar=2.021525
50.525   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
50.526   log_pkt pkt.c:126 RX len=59 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=51 nr=13
         dec_ack_frame frame.c:388 ACK lg=7 delay=0 (0 usec) cnt=0 block=0 [7]
         update_rtt recovery.c:319 in_flight=8230, cwnd=3193, ssthresh=3193, srtt=2.885295, rttvar=2.468888
         on_pkt_acked recovery.c:461 7 was RTX'ed as 9
         dec_ack_frame frame.c:388 ACK lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
         update_rtt recovery.c:319 in_flight=8230, cwnd=3663, ssthresh=3193, srtt=3.380000, rttvar=2.841075
         dec_ack_frame frame.c:388 ACK lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
         update_rtt recovery.c:319 in_flight=8230, cwnd=3663, ssthresh=3193, srtt=3.194009, rttvar=2.502787
         on_pkt_acked recovery.c:461 8 was RTX'ed as 9
         dec_frames frame.c:891 PADDING len=15
52.155   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4987, probing
52.155   log_pkt pkt.c:134 RX len=110 0x30=Short kyph=0 dcid=b36f8a94f3928b6f nr=13
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=73/16384 len=8 coff=81/32768 [seq]
         dec_ack_frame frame.c:388 ACK lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
         update_rtt recovery.c:319 in_flight=8230, cwnd=4073, ssthresh=3193, srtt=3.234786, rttvar=1.958645
         on_pkt_acked recovery.c:474 stream 4 fully acked
         on_pkt_acked recovery.c:477 q_write(s->c, s) done, exiting event loop
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=28a1e603098529b5
         dec_path_response_frame frame.c:732 PATH_RESPONSE data=5edeac6d8150d29f
         dec_frames frame.c:903 addtl stream or crypto frame at pos 49, copy
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=81/16384 len=17 coff=98/32768 [seq]
         dec_frames frame.c:903 addtl stream or crypto frame at pos 71, copy
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=98/16384 len=8 coff=106/32768 [seq]
         dec_ack_frame frame.c:388 ACK lg=9 delay=0 (0 usec) cnt=0 block=0 [9]
         update_rtt recovery.c:319 in_flight=8153, cwnd=4095, ssthresh=3193, srtt=3.270466, rttvar=1.540344
         dec_ack_frame frame.c:388 ACK lg=10 delay=0 (0 usec) cnt=0 block=0 [10]
         update_rtt recovery.c:319 in_flight=8112, cwnd=4107, ssthresh=3193, srtt=3.212055, rttvar=1.272081
         dec_frames frame.c:891 PADDING len=15
         q_write quic.c:302 wrote 4 bytes on serv conn 0:b36f8a94f3928b6f strm 4 
         q_read quic.c:318 blocking read on serv conn 0:b36f8a94f3928b6f
         q_read quic.c:342 read 74 bytes on serv conn 0:b36f8a94f3928b6f strm 4
         serve_cb server.c:110 conn 0:b36f8a94f3928b6f str 4 serving URL /5
         q_write quic.c:288 writing 5 bytes in 1 buf on serv conn 0:b36f8a94f3928b6f strm 4 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm -2 w/2 pkts in queue
52.156   log_pkt pkt.c:179 TX 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=b36f8a94f3928b6f len=1228 nr=10
         enc_padding_frame frame.c:1095 PADDING len=99
         log_stream_or_crypto_frame frame.c:116 CRYPTO 0x18 off=0 len=1108 [RTX] 
         on_pkt_sent recovery.c:285 in_flight=9321, cwnd=4119, ssthresh=3193, srtt=3.212055, rttvar=1.272081
         tx_stream_data conn.c:312 cwnd limit 9321 reached (2020 + 4119 > 2589240809)
         log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 
         log_sent_pkts conn.c:227 epoch 2 unacked: *1 *5 *9 *10 
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm 4 w/1 pkt in queue
52.156   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=11
         enc_ack_frame frame.c:1167 ACK lg=13 delay=118 (944 usec) cnt=0 block=0 [13]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=dbb1b3f7cb8bc3ae
         enc_padding_frame frame.c:1095 PADDING len=23
         log_stream_or_crypto_frame frame.c:111 STREAM 0x16=LEN|OFF id=4/8 off=12/8192 len=5 coff=12/16384 
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=dbb1b3f7cb8bc3ae
         on_pkt_sent recovery.c:285 in_flight=9399, cwnd=4119, ssthresh=3193, srtt=3.212055, rttvar=1.272081
         tx_stream_data conn.c:312 cwnd limit 9399 reached (2020 + 4119 > 2589240809)
         log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 *11 
         log_sent_pkts conn.c:227 epoch 2 unacked: *1 *5 *9 *10 
52.156   log_pkt pkt.c:187 TX 0x31=Short kyph=0 dcid=000000000000000d nr=12
         enc_ack_frame frame.c:1167 ACK lg=13 delay=118 (944 usec) cnt=0 block=0 [13]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=dbb1b3f7cb8bc3ae
         on_pkt_sent recovery.c:285 in_flight=9440, cwnd=4119, ssthresh=3193, srtt=3.212055, rttvar=1.272081
53.157   rx_pkts conn.c:921 pkt came from new peer 127.0.0.1:4988, probing
53.157   log_pkt pkt.c:126 RX len=54 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=46 nr=5
         dec_ack_frame frame.c:388 ACK lg=9 delay=0 (0 usec) cnt=0 block=0 [9]
         update_rtt recovery.c:319 in_flight=9440, cwnd=4119, ssthresh=3193, srtt=3.375858, rttvar=1.281667
         on_pkt_acked recovery.c:461 9 was RTX'ed as 10
         dec_ack_frame frame.c:388 ACK lg=10 delay=0 (0 usec) cnt=0 block=0 [10]
         update_rtt recovery.c:319 in_flight=9440, cwnd=4483, ssthresh=3193, srtt=3.079039, rttvar=1.554889
         on_pkt_acked recovery.c:474 stream -2 fully acked
         dec_frames frame.c:891 PADDING len=15
53.856   log_pkt pkt.c:126 RX len=49 0xfd=Handshake vers=0xff00000f dcid=b36f8a94f3928b6f scid=000000000000000d len=41 nr=7
         dec_ack_frame frame.c:388 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         update_rtt recovery.c:319 in_flight=9440, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
         on_pkt_acked recovery.c:461 1 was RTX'ed as 6
         dec_frames frame.c:891 PADDING len=15
59.905   on_ld_alarm recovery.c:214 TLP alarm #0 on serv conn 0:b36f8a94f3928b6f
         tx conn.c:420 data TX on serv conn 0:b36f8a94f3928b6f strm 4 w/1 pkt in queue
         tx_stream_data conn.c:285 skip non-lost TX'ed pkt 11
         log_sent_pkts conn.c:227 epoch 1/3 unacked: 7 *11 2 
         log_sent_pkts conn.c:227 epoch 2 unacked: *5 
59.905   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=13
         enc_ack_frame frame.c:1167 ACK lg=13 delay=968769 (7750152 usec) cnt=0 block=0 [13]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
         on_pkt_sent recovery.c:285 in_flight=9483, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
63.857   idle_alarm conn.c:1150 idle timeout on serv conn 0:b36f8a94f3928b6f
         idle_alarm conn.c:1152 conn 0:b36f8a94f3928b6f state conn_estb -> conn_drng
         enter_closing conn.c:1133 closing/draining alarm in 24.171429 sec on serv conn 0:b36f8a94f3928b6f
88.045   enter_closed conn.c:1080 conn 0:b36f8a94f3928b6f state conn_drng -> conn_clsd
         enter_closed conn.c:1083 <any>(c, 0) done, exiting event loop
         q_write quic.c:302 wrote 5 bytes on serv conn 0:b36f8a94f3928b6f strm 4 
         serve_cb server.c:110 conn 0:b36f8a94f3928b6f str 4 serving URL /3
         q_write quic.c:288 writing 3 bytes in 1 buf on serv conn 0:b36f8a94f3928b6f strm 4 
88.046   log_pkt pkt.c:187 TX 0x30=Short kyph=0 dcid=000000000000000d nr=14
         enc_ack_frame frame.c:1167 ACK lg=13 delay=4486340 (35890720 usec) cnt=0 block=0 [13]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
         on_pkt_sent recovery.c:285 in_flight=9526, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
94.094   on_ld_alarm recovery.c:214 TLP alarm #1 on serv conn 0:b36f8a94f3928b6f
94.094   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=15
         enc_ack_frame frame.c:1167 ACK lg=13 delay=5242442 (41939536 usec) cnt=0 block=0 [13]
         enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
         on_pkt_sent recovery.c:285 in_flight=9569, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
110.281   on_ld_alarm recovery.c:220 RTO alarm #0 on serv conn 0:b36f8a94f3928b6f
110.281   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=16
          enc_ack_frame frame.c:1167 ACK lg=13 delay=7265747 (58125976 usec) cnt=0 block=0 [13]
          enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
          on_pkt_sent recovery.c:285 in_flight=9612, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
142.655   on_ld_alarm recovery.c:220 RTO alarm #1 on serv conn 0:b36f8a94f3928b6f
142.655   log_pkt pkt.c:187 TX 0x36=Short kyph=0 dcid=000000000000000d nr=17
          enc_ack_frame frame.c:1167 ACK lg=13 delay=11312492 (90499936 usec) cnt=0 block=0 [13]
          enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
          on_pkt_sent recovery.c:285 in_flight=9655, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
207.343   on_ld_alarm recovery.c:220 RTO alarm #2 on serv conn 0:b36f8a94f3928b6f
207.343   log_pkt pkt.c:187 TX 0x32=Short kyph=0 dcid=000000000000000d nr=18
          enc_ack_frame frame.c:1167 ACK lg=13 delay=19398532 (155188256 usec) cnt=0 block=0 [13]
          enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
          on_pkt_sent recovery.c:285 in_flight=9698, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
336.715   on_ld_alarm recovery.c:220 RTO alarm #3 on serv conn 0:b36f8a94f3928b6f
336.715   log_pkt pkt.c:187 TX 0x34=Short kyph=0 dcid=000000000000000d nr=19
          enc_ack_frame frame.c:1167 ACK lg=13 delay=35570002 (284560016 usec) cnt=0 block=0 [13]
          enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
          on_pkt_sent recovery.c:285 in_flight=9741, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375
595.470   on_ld_alarm recovery.c:220 RTO alarm #4 on serv conn 0:b36f8a94f3928b6f
595.471   log_pkt pkt.c:187 TX 0x35=Short kyph=0 dcid=000000000000000d nr=20
          enc_ack_frame frame.c:1167 ACK lg=13 delay=67914458 (543315664 usec) cnt=0 block=0 [13]
          enc_path_challenge_frame frame.c:1444 PATH_CHALLENGE data=ab42fab52bd33d5f
          on_pkt_sent recovery.c:285 in_flight=9784, cwnd=4818, ssthresh=3193, srtt=4.012643, rttvar=3.033375



memory error in q_write

This is a use-after free. Maybe it is caused by writing on the stream after the stream is reset?


mcmillan@kenmcmil-z420:~/projects/ivy/doc/examples/quic$ cat ~/projects/ivy/doc/examples/quic/test/temp/quant23/quic_server_test_reset_stream2.err
0.032   q_init quic.c:507 quant/socket 0.0.16/9dfd871 with libev/epoll 4.22 ready
        q_init quic.c:508 submit bug reports at https://github.com/NTAP/quant/issues
0.033   q_init quic.c:527 debug build, storing fuzzer corpus data
        q_bind quic.c:362 binding serv socket on port 4443
        init_rec recovery.c:549 in_flight=0 (+0), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1310 serv conn ? on port 4443 created
        new_conn conn.c:1312 serv conn ? state conn_clsd -> conn_idle
        q_bind quic.c:364 bound serv socket on port 4443
        main server.c:239 server waiting on lo port 4443
0.147   rx_pkts conn.c:919 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:0000000000000008
        init_rec recovery.c:549 in_flight=0 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        new_conn conn.c:1310 serv conn 0:0000000000000008 on port 4443 created
        new_conn conn.c:1312 serv conn 0:0000000000000008 state conn_clsd -> conn_idle
0.147   log_pkt pkt.c:123 RX from=127.0.0.1:4987 len=1216 0xff=Initial vers=0xff00000f dcid=0000000000000008 scid=000000000000000d tok= len=1207 nr=0
        rx_pkt conn.c:681 supporting clnt-requested vers 0xff00000f
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=243 [seq]
        dec_frames frame.c:895 PADDING len=939
        rx_pkt conn.c:706 serv conn 0:0000000000000008 state conn_idle -> conn_opng
        update_act_scid conn.c:504 hshk switch to scid 0:c0190a54abd8141f for serv conn (was 0:0000000000000008)
        on_ch tls.c:306 	SNI = 
        on_ch tls.c:309 	ALPN = 
        chk_tp tls.c:471 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:483 	initial_max_data = 16384
        chk_tp tls.c:500 	idle_timeout = 60
        chk_tp tls.c:478 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:465 	initial_max_stream_data_uni = 8192
0.150   rx_crypto conn.c:584 serv conn 0:c0190a54abd8141f state conn_opng -> conn_estb
        tx conn.c:429 data TX on serv conn 0:c0190a54abd8141f strm -4 w/1 pkt in queue
        enc_pkt pkt.c:395 hshk switch to scid 0:8449e6b97689d14c for serv conn (was 0:c0190a54abd8141f)
        update_act_scid conn.c:504 hshk switch to scid 0:8449e6b97689d14c for serv conn (was 0:c0190a54abd8141f)
0.150   log_pkt pkt.c:176 TX to=127.0.0.1:4987 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c tok=1fd1bdaac0ce6ecfe5979ff1f45c309560ca7c2ea87574798e7d123c6281f9d0c0190a54abd8141f len=0 nr=0
        enc_ack_frame frame.c:1171 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1099 PADDING len=97
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 
        on_pkt_sent recovery.c:304 in_flight=299 (+299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.200000 sec on serv conn 0:8449e6b97689d14c
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -2 w/2 pkts in queue
0.151   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c len=0 nr=0
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 
        on_pkt_sent recovery.c:304 in_flight=1551 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.200000 sec on serv conn 0:8449e6b97689d14c
0.151   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c len=0 nr=1
        enc_padding_frame frame.c:1099 PADDING len=103
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 
        on_pkt_sent recovery.c:304 in_flight=1987 (+436), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.200000 sec on serv conn 0:8449e6b97689d14c
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.347   on_ld_alarm recovery.c:219 crypto RTX #1 on serv conn 0:8449e6b97689d14c
        detect_lost_pkts recovery.c:164 pkt 0 considered lost
        detect_lost_pkts recovery.c:203 in_flight=1688 (-299), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        detect_lost_pkts recovery.c:164 pkt 0 considered lost
        detect_lost_pkts recovery.c:164 pkt 1 considered lost
        detect_lost_pkts recovery.c:203 in_flight=0 (-1688), cwnd=6000 (-6000), ssthresh=6000 (+6000), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -4 w/1 pkt in queue
0.347   log_pkt pkt.c:176 TX to=127.0.0.1:4987 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c tok=1fd1bdaac0ce6ecfe5979ff1f45c309560ca7c2ea87574798e7d123c6281f9d0c0190a54abd8141f len=274 nr=1
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=299 (+299), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.400000 sec on serv conn 0:8449e6b97689d14c
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -2 w/2 pkts in queue
0.348   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c len=1228 nr=2
        enc_padding_frame frame.c:1099 PADDING len=99
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=1108 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=1551 (+1252), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.400000 sec on serv conn 0:8449e6b97689d14c
0.348   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c len=412 nr=3
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=1108 len=292 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=1987 (+436), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.000000 (+0.000000), rttvar=0.000000 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.400000 sec on serv conn 0:8449e6b97689d14c
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *0 *1 *2 *3 
        coalesce pkt.c:225 coalescing 0xfd len 436 behind 0xff len 299
0.415   log_pkt pkt.c:133 RX from=127.0.0.1:4987 len=109 0xfd=Handshake vers=0xff00000f dcid=8449e6b97689d14c scid=000000000000000d len=101 nr=0
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=52 [seq]
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        on_pkt_acked recovery.c:484 1 was RTX'ed as 3
        detect_lost_pkts recovery.c:203 in_flight=1987 (+0), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.268429), rttvar=0.134214 (+0.134214)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.468896 sec on serv conn 0:8449e6b97689d14c
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        on_pkt_acked recovery.c:484 0 was RTX'ed as 2
        detect_lost_pkts recovery.c:203 in_flight=1987 (+0), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (-0.033554)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.468896 sec on serv conn 0:8449e6b97689d14c
        dec_frames frame.c:895 PADDING len=15
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 
0.416   log_pkt pkt.c:194 TX to=127.0.0.1:4987 0x33=Short kyph=0 dcid=000000000000000d nr=0
        enc_new_token_frame frame.c:1498 NEW_TOKEN len=40 tok=1fd1bdaac0ce6ecfe5979ff1f45c309560ca7c2ea87574798e7d123c6281f9d0c0190a54abd8141f
        enc_new_cid_frame frame.c:1477 NEW_CONNECTION_ID seq=1 len=8 cid=1:f08f3a6e123b2668 tok=7a6f6fdde05e1148737449ff70e439b2
        on_pkt_sent recovery.c:304 in_flight=2082 (+95), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.468896 sec on serv conn 0:8449e6b97689d14c
0.441   ack_alarm pn.c:56 ACK timer fired on serv conn 0:8449e6b97689d14c epoch 2
0.441   log_pkt pkt.c:186 TX to=127.0.0.1:4987 0xfd=Handshake vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c len=0 nr=4
        enc_ack_frame frame.c:1171 ACK lg=0 delay=3234 (25872 usec) cnt=0 block=0 [0]
0.518   rx_pkts conn.c:953 pkt came from new peer 127.0.0.1:4988, probing
0.518   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=40 0x30=Short kyph=0 dcid=8449e6b97689d14c nr=0
        new_stream stream.c:101 serv conn 0:8449e6b97689d14c strm 4 (bidir, clnt) state strm_idle -> strm_open
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=0/65535 len=7 coff=7/393210 [seq]
        dec_frames frame.c:895 PADDING len=15
        rx conn.c:1065 q_rx_ready(0, 0) done, exiting event loop
        q_rx_ready quic.c:667 serv conn 0:8449e6b97689d14c ready to rx
        q_read quic.c:312 blocking read on serv conn 0:8449e6b97689d14c
        q_read quic.c:335 read 7 bytes on serv conn 0:8449e6b97689d14c strm 4
        serve_cb server.c:110 conn 0:8449e6b97689d14c str 4 serving URL /5
        q_write quic.c:271 writing 5 bytes in 1 buf on serv conn 0:8449e6b97689d14c strm 4 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm 4 w/1 pkt in queue
0.518   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x30=Short kyph=0 dcid=000000000000000d nr=1
        enc_ack_frame frame.c:1171 ACK lg=0 delay=53 (424 usec) cnt=0 block=0 [0]
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=bbb51f4676308db7
        enc_padding_frame frame.c:1099 PADDING len=24
        log_stream_or_crypto_frame frame.c:113 STREAM 0x12=LEN id=4/20 off=0/8192 len=5 coff=0/16384 
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=bbb51f4676308db7
        on_pkt_sent recovery.c:304 in_flight=2160 (+78), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.365906 sec on serv conn 0:8449e6b97689d14c
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
0.519   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x36=Short kyph=0 dcid=000000000000000d nr=2
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=bbb51f4676308db7
        on_pkt_sent recovery.c:304 in_flight=2195 (+35), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.365906 sec on serv conn 0:8449e6b97689d14c
0.884   on_ld_alarm recovery.c:219 crypto RTX #1 on serv conn 0:8449e6b97689d14c
        detect_lost_pkts recovery.c:164 pkt 1 considered lost
        detect_lost_pkts recovery.c:203 in_flight=1896 (-299), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        detect_lost_pkts recovery.c:203 in_flight=1896 (+0), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -4 w/1 pkt in queue
0.884   log_pkt pkt.c:176 TX to=127.0.0.1:4988 0xff=Initial vers=0xff00000f dcid=000000000000000d scid=8449e6b97689d14c tok= len=274 nr=2
        enc_padding_frame frame.c:1099 PADDING len=98
        log_stream_or_crypto_frame frame.c:118 CRYPTO 0x18 off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:304 in_flight=2195 (+299), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 1.073715 sec on serv conn 0:8449e6b97689d14c
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 2 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 2 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm 4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 0 *1 2 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
0.885   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x33=Short kyph=0 dcid=000000000000000d nr=3
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=bbb51f4676308db7
        on_pkt_sent recovery.c:304 in_flight=2230 (+35), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.268429 (+0.000000), rttvar=0.100661 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 1.073715 sec on serv conn 0:8449e6b97689d14c
0.948   log_pkt pkt.c:141 RX from=127.0.0.1:4988 len=60 0x30=Short kyph=0 dcid=8449e6b97689d14c nr=2
        dec_rst_stream_frame frame.c:800 RST_STREAM sid=4 err=0xf66b off=8
        dec_rst_stream_frame frame.c:806 serv conn 0:8449e6b97689d14c strm 4 (bidir, clnt) state strm_open -> strm_clsd
        dec_ack_frame frame.c:391 ACK lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        on_pkt_acked recovery.c:497 stream 4 fully acked
        on_pkt_acked recovery.c:500 q_write(c, s) done, exiting event loop
        detect_lost_pkts recovery.c:203 in_flight=2152 (-78), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.288646 (+0.020218), rttvar=0.115931 (+0.015270)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.513083 sec on serv conn 0:8449e6b97689d14c
        dec_ack_frame frame.c:391 ACK lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        detect_lost_pkts recovery.c:203 in_flight=2057 (-95), cwnd=6000 (+0), ssthresh=6000 (+0), srtt=0.319210 (+0.030564), rttvar=0.148076 (+0.032146)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.574212 sec on serv conn 0:8449e6b97689d14c
        dec_ack_frame frame.c:391 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        detect_lost_pkts recovery.c:203 in_flight=2022 (-35), cwnd=6007 (+7), ssthresh=6000 (+0), srtt=0.333080 (+0.013870), rttvar=0.138797 (-0.009279)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.601951 sec on serv conn 0:8449e6b97689d14c
        log_stream_or_crypto_frame frame.c:113 STREAM 0x16=LEN|OFF id=4/20 off=8/65535 len=7 coff=14/393210 [ooo]
        dec_frames frame.c:895 PADDING len=15
        free_stream stream.c:133 freeing strm 4 on serv conn 0:8449e6b97689d14c
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -4 w/1 pkt in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 3 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
        tx conn.c:429 data TX on serv conn 0:8449e6b97689d14c strm -2 w/2 pkts in queue
        log_sent_pkts conn.c:229 epoch 0 unacked: *0 *1 *2 
        log_sent_pkts conn.c:229 epoch 1/3 unacked: 3 
        log_sent_pkts conn.c:229 epoch 2 unacked: *2 *3 (4) 
0.949   log_pkt pkt.c:194 TX to=127.0.0.1:4988 0x34=Short kyph=0 dcid=000000000000000d nr=4
        enc_ack_frame frame.c:1171 ACK lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        enc_path_challenge_frame frame.c:1448 PATH_CHALLENGE data=bbb51f4676308db7
        on_pkt_sent recovery.c:304 in_flight=2062 (+40), cwnd=6007 (+0), ssthresh=6000 (+0), srtt=0.333080 (+0.000000), rttvar=0.138797 (+0.000000)
        set_ld_timer recovery.c:130 crypto RTX alarm in 0.601951 sec on serv conn 0:8449e6b97689d14c
=================================================================
==27485==ERROR: AddressSanitizer: heap-use-after-free on address 0x610000000858 at pc 0x5631d53542d7 bp 0x7ffc6ac87390 sp 0x7ffc6ac87380
READ of size 8 at 0x610000000858 thread T0
    #0 0x5631d53542d6 in q_write /home/mcmillan/projects/quant/lib/src/quic.c:289
    #1 0x5631d534396b in serve_cb /home/mcmillan/projects/quant/bin/server.c:139
    #2 0x7f7f8daf6e49 in http_parser_execute /home/mcmillan/projects/http-parser/http_parser.c:1075
    #3 0x5631d5345756 in main /home/mcmillan/projects/quant/bin/server.c:277
    #4 0x7f7f8bbc6b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #5 0x5631d5342bc9 in _start (/home/mcmillan/projects/quant/Debug/bin/server+0x1aabc9)

0x610000000858 is located 24 bytes inside of 184-byte region [0x610000000840,0x6100000008f8)
freed by thread T0 here:
    #0 0x7f7f8dddd7b8 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde7b8)
    #1 0x5631d536b967 in free_stream /home/mcmillan/projects/quant/lib/src/stream.c:148
    #2 0x5631d53a8958 in rx_pkts /home/mcmillan/projects/quant/lib/src/conn.c:1017
    #3 0x5631d53a92db in rx /home/mcmillan/projects/quant/lib/src/conn.c:1040
    #4 0x7f7f8cecfd72 in ev_invoke_pending (/usr/lib/x86_64-linux-gnu/libev.so.4+0x3d72)

previously allocated by thread T0 here:
    #0 0x7f7f8ddddd38 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded38)
    #1 0x5631d53688c2 in new_stream /home/mcmillan/projects/quant/lib/src/stream.c:95
    #2 0x5631d5435042 in dec_stream_or_crypto_frame /home/mcmillan/projects/quant/lib/src/frame.c:197
    #3 0x5631d54503ef in dec_frames /home/mcmillan/projects/quant/lib/src/frame.c:918
    #4 0x5631d5396e43 in rx_pkt /home/mcmillan/projects/quant/lib/src/conn.c:786
    #5 0x5631d53a8229 in rx_pkts /home/mcmillan/projects/quant/lib/src/conn.c:1009
    #6 0x5631d53a92db in rx /home/mcmillan/projects/quant/lib/src/conn.c:1040
    #7 0x7f7f8cecfd72 in ev_invoke_pending (/usr/lib/x86_64-linux-gnu/libev.so.4+0x3d72)

SUMMARY: AddressSanitizer: heap-use-after-free /home/mcmillan/projects/quant/lib/src/quic.c:289 in q_write
Shadow bytes around the buggy address:
  0x0c207fff80b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c207fff80c0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c207fff80d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c207fff80e0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c207fff80f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
=>0x0c207fff8100: fa fa fa fa fa fa fa fa fd fd fd[fd]fd fd fd fd
  0x0c207fff8110: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
  0x0c207fff8120: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c207fff8130: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c207fff8140: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c207fff8150: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==27485==ABORTING
mcmillan@kenmcmil-z420:~/projects/ivy/doc/examples/quic$ 


Build fails on CentOS 7.6

Hi,

Trying to build on my machine (CentOS Linux release 7.6.1810 (Core)) fails:

[amit@localhost Debug]$ cmake ../
-- Checking for module 'libbrotlidec'
--   No package 'libbrotlidec' found
-- Checking for module 'libbrotlienc'
--   No package 'libbrotlienc' found
CMake Warning at lib/deps/picotls/CMakeLists.txt:50 (MESSAGE):
  Enabling OpenSSL support


-- picotls/include: /home/amit/quant/lib/deps/picotls/include
-- picotls libraries: /home/amit/quant/Debug/lib/deps/picotls/libpicotls-core.a;/home/amit/quant/Debug/lib/deps/picotls/libpicotls-minicrypto.a;/home/amit/quant/Debug/lib/deps/picotls/libpicotls-openssl.a
-- root: /usr
-- OpenSSL_VERSION: 1.0.2k
-- OpenSSL_INCLUDE_DIR: /usr/include
-- OpenSSL_LIBRARIES: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/amit/quant/Debug
[amit@localhost Debug]$ make
[ 13%] Built target picoquic-core
[ 15%] Building C object lib/deps/warpcore/lib/CMakeFiles/obj_all.dir/src/plat.c.o
In file included from /usr/include/ifaddrs.h:22:0,
                 from /home/amit/quant/lib/deps/warpcore/lib/src/plat.c:39:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
 #  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
    ^
cc1: error: unrecognized command line option "-Wno-extra-semi-stmt" [-Werror]
cc1: error: unrecognized command line option "-Wno-disabled-macro-expansion" [-Werror]
cc1: all warnings being treated as errors
make[2]: *** [lib/deps/warpcore/lib/CMakeFiles/obj_all.dir/src/plat.c.o] Error 1
make[1]: *** [lib/deps/warpcore/lib/CMakeFiles/obj_all.dir/all] Error 2
make: *** [all] Error 2

Any suggestions?
Thanks

Issue only when redirecting server output to a file

Hello,

I don't know if this is due to my lack of sleep or it is a real issue.

When I run quant server (latest commit afc00e9, Debug mode) with no output redirection, it works:

./bin/server -d /dev/shm/ -b 500000

When I run it with redirection:

./bin/server -d /dev/shm/ -b 500000 &> /tmp/quant-server-log

, the connection was established but then does not work, you can see the output here (view it colorfully with less -R):
server.log
And it seems Release mode does not work either.

Is there any possibility some file descriptor got messed up in my case?

Thanks,

empty version negotiation packet

When hitting the public endpoint with an unsupported version, I'm getting an empty version negotiation packet (17 bytes long, which means the header seems correct, but it contains no versions at all).

Memory fault on RST_STREAM of closed stream

server log follows:

0.035   q_init quic.c:578 quant/socket 0.0.18/0c15831 with libev/epoll 4.22 ready
        q_init quic.c:579 submit bug reports at https://github.com/NTAP/quant/issues
0.037   q_init quic.c:599 debug build, storing fuzzer corpus data
        q_bind quic.c:421 bound serv socket to port 4443
        main server.c:257 server waiting on lo port 4443
        q_rx_ready quic.c:771 waiting for conn to get ready to rx
9.735   rx_pkts conn.c:983 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:0000000000000001
        new_conn conn.c:1509 serv conn 0:0000000000000001 on port 4443 created
        new_conn conn.c:1511 serv conn 0:0000000000000001 state conn_clsd -> conn_idle
9.735   log_pkt pkt.c:101 RX from=127.0.0.1:4987 len=1216 0xc0=Initial vers=0xff000012 dcid=0000000000000001 scid=0000000000000000 tok= len=1207 nr=0
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=248 [seq]
        dec_frames frame.c:988 PADDING len=937
        rx_pkt conn.c:767 serv conn 0:0000000000000001 state conn_idle -> conn_opng
        update_act_scid conn.c:532 hshk switch to scid 0:903a5a9af64d8e75 for conn_opng serv conn (was 0:0000000000000001)
        on_ch tls.c:309 	SNI = 
        on_ch tls.c:327 	ALPN = hq-17 (and maybe others, none supported, ignoring)
        chk_tp tls.c:507 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:519 	initial_max_data = 16384
        chk_tp tls.c:536 	idle_timeout = 60
        chk_tp tls.c:514 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:501 	initial_max_stream_data_uni = 8192
9.740   rx_crypto conn.c:630 serv conn 0:903a5a9af64d8e75 state conn_opng -> conn_estb
        tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -4 w/1 pkt in queue
9.740   log_pkt pkt.c:151 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 tok=0a0ba868e84d565ccf446639c36d91f493a7911c4d3d9c5ec572a12bbdadc289903a5a9af64d8e75 len=0 nr=0
        enc_ack_frame frame.c:1266 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1192 PADDING len=17
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=155 
        on_pkt_sent recovery.c:306 in_flight=219 (+219), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -2 w/2 pkts in queue
9.740   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=0 nr=0
        enc_padding_frame frame.c:1192 PADDING len=23
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=1188 
        on_pkt_sent recovery.c:306 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        enc_pkt pkt.c:569 clnt path validated
9.740   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=0 nr=1
        enc_padding_frame frame.c:1192 PADDING len=23
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=1188 len=201 
        on_pkt_sent recovery.c:306 in_flight=1736 (+265), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        enc_pkt pkt.c:569 clnt path validated
        coalesce pkt.c:198 coalescing 265-byte Handshake pkt behind 219-byte Initial pkt
        log_sent_pkts conn.c:240 serv epoch 0 unacked: 0 
        log_sent_pkts conn.c:240 serv epoch 2 unacked: 0 1 
9.935   on_ld_alarm recovery.c:236 crypto RTX #1 on serv conn 0:903a5a9af64d8e75
        detect_lost_pkts recovery.c:214 serv Initial pkt 0 considered lost
        detect_lost_pkts recovery.c:220 in_flight=1517 (-219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        detect_lost_pkts recovery.c:214 serv Handshake pkt 0 considered lost
        detect_lost_pkts recovery.c:214 serv Handshake pkt 1 considered lost
        detect_lost_pkts recovery.c:220 in_flight=0 (-1517), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -4 w/1 pkt in queue
9.935   log_pkt pkt.c:151 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 tok=0a0ba868e84d565ccf446639c36d91f493a7911c4d3d9c5ec572a12bbdadc289903a5a9af64d8e75 len=194 nr=1
        enc_padding_frame frame.c:1192 PADDING len=18
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=155 [RTX] 
        on_pkt_sent recovery.c:306 in_flight=219 (+219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -2 w/2 pkts in queue
9.935   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=1228 nr=2
        enc_padding_frame frame.c:1192 PADDING len=19
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=1188 [RTX] 
        on_pkt_sent recovery.c:306 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        enc_pkt pkt.c:569 clnt path validated
9.935   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=241 nr=3
        enc_padding_frame frame.c:1192 PADDING len=18
        log_stream_or_crypto_frame frame.c:133 CRYPTO off=1188 len=201 [RTX] 
        on_pkt_sent recovery.c:306 in_flight=1736 (+265), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        enc_pkt pkt.c:569 clnt path validated
        coalesce pkt.c:198 coalescing 265-byte Handshake pkt behind 219-byte Initial pkt
        log_sent_pkts conn.c:240 serv epoch 0 unacked: 1 
        log_sent_pkts conn.c:240 serv epoch 2 unacked: 2 3 
10.003   abandon_pn pn.c:122 abandon serv epoch 0 processing
10.003   log_pkt pkt.c:110 RX from=127.0.0.1:4987 len=96 0xe0=Handshake vers=0xff000012 dcid=903a5a9af64d8e75 scid=0000000000000000 len=88 nr=0
         log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=52 [seq]
         dec_frames frame.c:988 PADDING len=15
10.003   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=0 nr=4
         enc_ack_frame frame.c:1266 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 4 2 3 
10.159   log_pkt pkt.c:119 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=903a5a9af64d8e75 nr=0
         new_stream stream.c:105 serv conn 0:903a5a9af64d8e75 strm 4 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:316 serv conn 0:903a5a9af64d8e75 strm 4 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0f=FIN|LEN|OFF id=4/20 off=0/65535 len=16 coff=16/393210 [seq]
         dec_frames frame.c:988 PADDING len=1185
         rx conn.c:1217 q_rx_ready(0, 0) done, exiting event loop
         q_rx_ready quic.c:779 serv conn 0:903a5a9af64d8e75 ready to rx
         q_accept quic.c:475 serv conn 0:903a5a9af64d8e75 accepted from clnt 127.0.0.1:4987, cipher AES256-GCM
         q_read quic.c:331 non-blocking read on serv conn 0:903a5a9af64d8e75
         q_read quic.c:371 read 16 bytes in 0.000 sec (122.137 Mb/s) on serv conn 0:903a5a9af64d8e75 strm 4
         serve_cb server.c:119 conn 0:903a5a9af64d8e75 str 4 serving URL /index.html
         q_write quic.c:260 writing 4 bytes in 1 buf on serv conn 0:903a5a9af64d8e75 strm 4 and closing
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -2 w/2 pkts in queue
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm 4 w/1 pkt in queue
10.160   log_pkt pkt.c:169 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=0
         enc_ack_frame frame.c:1266 ACK 0x02= lg=0 delay=91 (728 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1192 PADDING len=32
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0b=FIN|LEN id=4/20 off=0/8192 len=4 coff=0/16384 
         enc_new_token_frame frame.c:1583 NEW_TOKEN len=40 tok=0a0ba868e84d565ccf446639c36d91f493a7911c4d3d9c5ec572a12bbdadc289903a5a9af64d8e75
         enc_new_cid_frame frame.c:1562 NEW_CONNECTION_ID seq=1 len=8 cid=1:d3c7ccf22573772e tok=aee38de7ac7ceb5c73fde092c182355d
         on_pkt_sent recovery.c:306 in_flight=1654 (-82), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 0 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 4 2 3 
10.336   on_ld_alarm recovery.c:236 crypto RTX #2 on serv conn 0:903a5a9af64d8e75
         detect_lost_pkts recovery.c:214 serv Handshake pkt 4 considered lost
         detect_lost_pkts recovery.c:214 serv Handshake pkt 2 considered lost
         detect_lost_pkts recovery.c:214 serv Handshake pkt 3 considered lost
         detect_lost_pkts recovery.c:220 in_flight=137 (-1517), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -2 w/2 pkts in queue
10.336   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=1228 nr=5
         enc_padding_frame frame.c:1192 PADDING len=19
         log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=1188 [RTX] 
         on_pkt_sent recovery.c:306 in_flight=1389 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
10.336   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=241 nr=6
         enc_padding_frame frame.c:1192 PADDING len=18
         log_stream_or_crypto_frame frame.c:133 CRYPTO off=1188 len=201 [RTX] 
         on_pkt_sent recovery.c:306 in_flight=1654 (+265), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm 4 w/1 pkt in queue
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 0 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 5 6 
10.467   log_pkt pkt.c:101 RX from=127.0.0.1:4987 len=2020 0xc2=Initial vers=0xff000012 dcid=903a5a9af64d8e75 scid=0000000000000000 tok= len=1207 nr=0
         rx_pkts conn.c:1091 ignoring 2020-byte Initial pkt due to abandoned processing
11.128   log_pkt pkt.c:110 RX from=127.0.0.1:4987 len=61 0xe0=Handshake vers=0xff000012 dcid=903a5a9af64d8e75 scid=0000000000000000 len=53 nr=2
         dec_ack_frame frame.c:468 ACK 0x02= lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
         dec_ack_frame frame.c:468 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         dec_ack_frame frame.c:468 ACK 0x02= lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         dec_ack_frame frame.c:468 ACK 0x02= lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         dec_frames frame.c:988 PADDING len=15
11.136   on_ld_alarm recovery.c:236 crypto RTX #3 on serv conn 0:903a5a9af64d8e75
         detect_lost_pkts recovery.c:214 serv Handshake pkt 5 considered lost
         detect_lost_pkts recovery.c:214 serv Handshake pkt 6 considered lost
         detect_lost_pkts recovery.c:220 in_flight=137 (-1517), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -2 w/2 pkts in queue
11.137   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=1228 nr=7
         enc_ack_frame frame.c:1266 ACK 0x02= lg=2 delay=1067 (8536 usec) cnt=1 block=0 [2]
         enc_ack_frame frame.c:1257 ACK gap=0 block=0 [0]
         enc_padding_frame frame.c:1192 PADDING len=11
         log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=1188 [RTX] 
         on_pkt_sent recovery.c:306 in_flight=1389 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
11.137   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=903a5a9af64d8e75 len=241 nr=8
         enc_padding_frame frame.c:1192 PADDING len=18
         log_stream_or_crypto_frame frame.c:133 CRYPTO off=1188 len=201 [RTX] 
         on_pkt_sent recovery.c:306 in_flight=1654 (+265), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm 4 w/1 pkt in queue
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 0 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 8 7 
11.356   rx_pkts conn.c:1043 pkt came from new peer 127.0.0.1:4988, probing
11.356   log_pkt pkt.c:119 RX from=127.0.0.1:4988 len=1216 0x40=Short kyph=0 spin=0 dcid=903a5a9af64d8e75 nr=2
         new_stream stream.c:105 serv conn 0:903a5a9af64d8e75 strm 16 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:316 serv conn 0:903a5a9af64d8e75 strm 16 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0f=FIN|LEN|OFF id=16/20 off=0/65535 len=16 coff=32/393210 [seq]
         dec_frames frame.c:988 PADDING len=1185
11.381   ack_alarm conn.c:1345 ACK timer fired on serv conn 0:903a5a9af64d8e75
11.381   log_pkt pkt.c:169 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=1
         enc_ack_frame frame.c:1266 ACK 0x02= lg=2 delay=3205 (25640 usec) cnt=1 block=0 [2]
         enc_ack_frame frame.c:1257 ACK gap=0 block=0 [0]
         enc_path_challenge_frame frame.c:1534 PATH_CHALLENGE data=5cf582cb43f0283b
         on_pkt_sent recovery.c:306 in_flight=1697 (+43), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 0 1 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 8 7 
11.773   rx_pkts conn.c:1043 pkt came from new peer 127.0.0.1:4988, probing
11.774   log_pkt pkt.c:119 RX from=127.0.0.1:4988 len=1216 0x40=Short kyph=0 spin=0 dcid=903a5a9af64d8e75 nr=4
         dec_ack_frame frame.c:468 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         on_pkt_acked recovery.c:441 q_write(c, s) done, exiting event loop
         dec_ack_frame frame.c:528 ECN verification failed for serv conn 0:903a5a9af64d8e75
         detect_lost_pkts recovery.c:220 in_flight=1560 (-137), cwnd=12137 (+137), ssthresh=0 (+0), srtt=1.613 (+1.613), rttvar=0.807 (+0.807)
         dec_frames frame.c:988 PADDING len=1200
         q_write quic.c:303 serv conn 0:903a5a9af64d8e75 strm 4 (bi, clnt) state strm_hcrm -> strm_clsd
         q_write quic.c:310 wrote 4 bytes in 1.614 sec (19.829 b/s) on serv conn 0:903a5a9af64d8e75 strm 4 and closed
         free_stream stream.c:146 freeing strm 4 on serv conn 0:903a5a9af64d8e75
         q_rx_ready quic.c:779 serv conn 0:903a5a9af64d8e75 ready to rx
         q_read quic.c:331 non-blocking read on serv conn 0:903a5a9af64d8e75
         q_read quic.c:371 read 16 bytes in 0.000 sec (89.699 Mb/s) on serv conn 0:903a5a9af64d8e75 strm 16
         serve_cb server.c:119 conn 0:903a5a9af64d8e75 str 16 serving URL /index.html
         q_write quic.c:260 writing 4 bytes in 1 buf on serv conn 0:903a5a9af64d8e75 strm 16 and closing
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm -2 w/2 pkts in queue
         tx_stream conn.c:373 TX on serv conn 0:903a5a9af64d8e75 strm 16 w/1 pkt in queue
11.774   log_pkt pkt.c:169 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=2
         enc_ack_frame frame.c:1266 ACK 0x02= lg=4 delay=101 (808 usec) cnt=1 block=0 [4]
         enc_ack_frame frame.c:1257 ACK gap=0 block=0 [2]
         enc_path_challenge_frame frame.c:1534 PATH_CHALLENGE data=72b20a82cfe1c8d1
         enc_padding_frame frame.c:1192 PADDING len=21
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0b=FIN|LEN id=16/20 off=0/8192 len=4 coff=4/16384 
         enc_path_challenge_frame frame.c:1534 PATH_CHALLENGE data=72b20a82cfe1c8d1
         on_pkt_sent recovery.c:306 in_flight=1637 (+77), cwnd=12137 (+0), ssthresh=0 (+0), srtt=1.613 (+0.000), rttvar=0.807 (+0.000)
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 1 2 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 8 7 
12.620   log_pkt pkt.c:119 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=903a5a9af64d8e75 nr=1
         new_stream stream.c:105 serv conn 0:903a5a9af64d8e75 strm 12 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:316 serv conn 0:903a5a9af64d8e75 strm 12 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0f=FIN|LEN|OFF id=12/20 off=0/65535 len=16 coff=48/393210 [seq]
         dec_frames frame.c:999 addtl stream or crypto frame at pos 30, copy
         new_stream stream.c:105 serv conn 0:903a5a9af64d8e75 strm 20 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:316 serv conn 0:903a5a9af64d8e75 strm 20 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0f=FIN|LEN|OFF id=20/44 off=0/65535 len=16 coff=64/393210 [seq]
         dec_frames frame.c:988 PADDING len=1165
12.646   ack_alarm conn.c:1345 ACK timer fired on serv conn 0:903a5a9af64d8e75
12.646   log_pkt pkt.c:169 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=3
         enc_ack_frame frame.c:1266 ACK 0x02= lg=4 delay=109022 (872176 usec) cnt=1 block=0 [4]
         enc_ack_frame frame.c:1241 ACK gap=0 block=1 [1..2]
         enc_path_challenge_frame frame.c:1534 PATH_CHALLENGE data=72b20a82cfe1c8d1
         enc_max_streams_frame frame.c:1436 MAX_STREAMS 0x12=bi max=12
         on_pkt_sent recovery.c:306 in_flight=1684 (+47), cwnd=12137 (+0), ssthresh=0 (+0), srtt=1.613 (+0.000), rttvar=0.807 (+0.000)
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 1 2 3 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 8 7 
13.267   rx_pkts conn.c:1043 pkt came from new peer 127.0.0.1:4988, probing
13.267   log_pkt pkt.c:119 RX from=127.0.0.1:4988 len=1216 0x40=Short kyph=0 spin=0 dcid=903a5a9af64d8e75 nr=9
         dec_path_response_frame frame.c:825 PATH_RESPONSE data=5cf582cb43f0283b
         new_stream stream.c:105 serv conn 0:903a5a9af64d8e75 strm 8 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:316 serv conn 0:903a5a9af64d8e75 strm 8 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:128 STREAM 0x0f=FIN|LEN|OFF id=8/44 off=0/65535 len=16 coff=80/393210 [seq]
         dec_frames frame.c:988 PADDING len=1176
13.293   ack_alarm conn.c:1345 ACK timer fired on serv conn 0:903a5a9af64d8e75
13.293   log_pkt pkt.c:169 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=4
         enc_ack_frame frame.c:1266 ACK 0x02= lg=9 delay=3186 (25488 usec) cnt=2 block=0 [9]
         enc_ack_frame frame.c:1257 ACK gap=3 block=0 [4]
         enc_ack_frame frame.c:1241 ACK gap=0 block=1 [1..2]
         enc_path_challenge_frame frame.c:1534 PATH_CHALLENGE data=8e11d1a283dca0d
         on_pkt_sent recovery.c:306 in_flight=1729 (+45), cwnd=12137 (+0), ssthresh=0 (+0), srtt=1.613 (+0.000), rttvar=0.807 (+0.000)
         log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 1 2 3 4 
         log_sent_pkts conn.c:240 serv epoch 2 unacked: 8 7 
13.751   log_pkt pkt.c:119 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=903a5a9af64d8e75 nr=25
         dec_reset_stream_frame frame.c:888 RESET_STREAM sid=4 err=0x62c6 off=16
         get_and_validate_strm frame.c:165 ignoring 0x04 frame for closed strm 4 on serv conn 0:903a5a9af64d8e75
/home/mcmillan/projects/quant/lib/src/frame.c:894:5: runtime error: member access within null pointer of type 'struct q_stream'
ASAN:DEADLYSIGNAL
=================================================================
==32646==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000010 (pc 0x55b4bcea8f46 bp 0x7ffd3e0c3db0 sp 0x7ffd3e0c3c50 T0)
==32646==The signal is caused by a READ memory access.
==32646==Hint: address points to the zero page.
    #0 0x55b4bcea8f45 in dec_reset_stream_frame /home/mcmillan/projects/quant/lib/src/frame.c:894
    #1 0x55b4bcec6ba2 in dec_frames /home/mcmillan/projects/quant/lib/src/frame.c:1029
    #2 0x55b4bce182d9 in rx_pkt /home/mcmillan/projects/quant/lib/src/conn.c:851
    #3 0x55b4bce3527f in rx_pkts /home/mcmillan/projects/quant/lib/src/conn.c:1130
    #4 0x55b4bce3a5be in rx /home/mcmillan/projects/quant/lib/src/conn.c:1171
    #5 0x7fdad80d6d72 in ev_invoke_pending (/usr/lib/x86_64-linux-gnu/libev.so.4+0x3d72)
    #6 0x7fdad80da3dd in ev_run (/usr/lib/x86_64-linux-gnu/libev.so.4+0x73dd)
    #7 0x55b4bcdc3400 in do_loop_run /home/mcmillan/projects/quant/lib/src/quic.c:122
    #8 0x55b4bcdccc0b in q_write /home/mcmillan/projects/quant/lib/src/quic.c:284
    #9 0x55b4bce49783 in q_write_file /home/mcmillan/projects/quant/lib/src/util.c:89
    #10 0x55b4bcdc1116 in serve_cb /home/mcmillan/projects/quant/bin/server.c:174
    #11 0x7fdad8cfe610 in http_parser_execute (/usr/lib/x86_64-linux-gnu/libhttp_parser.so.2.7.1+0x3610)
    #12 0x55b4bcdc2b22 in main /home/mcmillan/projects/quant/bin/server.c:294
    #13 0x7fdad6fe2b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #14 0x55b4bcdc03c9 in _start (/home/mcmillan/projects/quant/Debug/bin/server+0x1e13c9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /home/mcmillan/projects/quant/lib/src/frame.c:894 in dec_reset_stream_frame
==32646==ABORTING

CMake Error: could not find hg for clone of nspr

I am having an issue building quant. I am running Ubuntu 18.04 with kernel 4.15.0-33-generic #36-Ubuntu.

apt-get install libev-dev libssl-dev libhttp-parser-dev libbsd-dev
-- The C compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for htobe64
-- Looking for htobe64 - found
-- Looking for htobe64
-- Looking for htobe64 - not found
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.1.0g")
-- Performing Test _march_native
-- Performing Test _march_native - Success
-- Performing Test _Wextra
-- Performing Test _Wextra - Success
-- Performing Test _Wpedantic
-- Performing Test _Wpedantic - Success
-- Performing Test _Weverything
-- Performing Test _Weverything - Failed
-- Performing Test _Werror
-- Performing Test _Werror - Success
-- Performing Test _fcolor_diagnostics
-- Performing Test _fcolor_diagnostics - Failed
-- Performing Test _fdiagnostics_color_always
-- Performing Test _fdiagnostics_color_always - Success
-- Performing Test _Wno_missing_field_initializers
-- Performing Test _Wno_missing_field_initializers - Success
-- Performing Test _Wno_disabled_macro_expansion
-- Performing Test _Wno_disabled_macro_expansion - Success
-- Performing Test _Wno_cpp
-- Performing Test _Wno_cpp - Success
-- Performing Test _Wno_missing_braces
-- Performing Test _Wno_missing_braces - Success
-- Performing Test _Wno_gnu_statement_expression
-- Performing Test _Wno_gnu_statement_expression - Success
-- Performing Test _Wno_extended_offsetof
-- Performing Test _Wno_extended_offsetof - Success
-- Performing Test _Wno_redundant_parens
-- Performing Test _Wno_redundant_parens - Success
-- Looking for sanitizer/asan_interface.h
-- Looking for sanitizer/asan_interface.h - found
-- Performing Test _fsanitize_address
-- Performing Test _fsanitize_address - Success
-- Performing Test _fno_omit_frame_pointer
-- Performing Test _fno_omit_frame_pointer - Success
-- Performing Test _fsanitize_address_use_after_scope
-- Performing Test _fsanitize_address_use_after_scope - Success
-- Performing Test _fno_optimize_sibling_calls
-- Performing Test _fno_optimize_sibling_calls - Success
-- Performing Test _fsanitize_undefined
-- Performing Test _fsanitize_undefined - Success
-- Performing Test _fsanitize_unsigned_integer_overflow
-- Performing Test _fsanitize_unsigned_integer_overflow - Failed
-- Performing Test _fno_sanitize_alignment
-- Performing Test _fno_sanitize_alignment - Success
-- Performing Test _fno_common
-- Performing Test _fno_common - Success
-- Found http-parser: /usr/lib/x86_64-linux-gnu/libhttp_parser.so
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components:  doxygen missing components:  dot
CMake Error at /usr/share/cmake-3.10/Modules/ExternalProject.cmake:2335 (message):
  error: could not find hg for clone of nspr
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/ExternalProject.cmake:3029 (_ep_add_download_command)
  external/CMakeLists.txt:161 (externalproject_add)


-- Configuring incomplete, errors occurred!

Let me know if I am missing a step or a dependency.

heap use after free: based on commit 93d6363dac63fd37da52e7370d83fd81a634b9d4

I ran into this error when testing commit 93d6363 of the implementation. I haven't been able to test it for the latest version of the implementation as I was using a custom client which doesn't support the latest version yet.

==1956==ERROR: AddressSanitizer: heap-use-after-free on address 0x60f000004460 at pc 0x55fcfa59b1d9 bp 0x7fffa77c3700 sp 0x7fffa77c36f0
READ of size 4 at 0x60f000004460 thread T0
$0 0x55fcfa59b1d8 in q_is_stream_closed /home/quant/lib/src/quic.c:935
$1 0x55fcfa58cdd0 in main /home/quant/bin/server.c:461
$2 0x7fdc719a1b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
$3 0x55fcfa5895b9 in _start (/home/quant/Debug/bin/server+0x1165b9)

0x60f000004460 is located 160 bytes inside of 168-byte region [0x60f0000043c0,0x60f000004468)
freed by thread T0 here:
$0 0x7fdc734487a8 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde7a8)
$1 0x55fcfa5a316b in free_stream /home/quant/lib/src/stream.c:163
$2 0x55fcfa5c080e in free_conn /home/quant/lib/src/conn.c:1946
$3 0x55fcfa5953a8 in q_close /home/quant/lib/src/quic.c:833
$4 0x55fcfa589d28 in send_err /home/quant/bin/server.c:133
$5 0x55fcfa58f50e in main /home/quant/bin/server.c:453
$6 0x7fdc719a1b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

previously allocated by thread T0 here:
$0 0x7fdc73448d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
$1 0x55fcfa5a52d2 in new_stream /home/quant/lib/src/stream.c:99
$2 0x55fcfa622617 in dec_stream_or_crypto_frame /home/quant/lib/src/frame.c:321
$3 0x55fcfa626c02 in dec_frames /home/quant/lib/src/frame.c:1283
$4 0x55fcfa5bb613 in rx_pkt /home/quant/lib/src/conn.c:1072
$5 0x55fcfa5c83fe in rx_pkts /home/quant/lib/src/conn.c:1414
$6 0x55fcfa5c98be in rx /home/quant/lib/src/conn.c:1518
$7 0x55fcfa601f21 in loop_run /home/quant/lib/src/loop.c:103
$8 0x55fcfa5909e9 in q_ready /home/quant/lib/src/quic.c:983
$9 0x55fcfa58c9eb in main /home/quant/bin/server.c:375
$10 0x7fdc719a1b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

SUMMARY: AddressSanitizer: heap-use-after-free /home/quant/lib/src/quic.c:935 in q_is_stream_closed
Shadow bytes around the buggy address:
0x0c1e7fff8830: fd fd fd fa fa fa fa fa fa fa fa fa fd fd fd fd
0x0c1e7fff8840: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1e7fff8850: fd fa fa fa fa fa fa fa fa fa fd fd fd fd fd fd
0x0c1e7fff8860: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
0x0c1e7fff8870: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
=>0x0c1e7fff8880: fd fd fd fd fd fd fd fd fd fd fd fd[fd]fa fa fa
0x0c1e7fff8890: fa fa fa fa fa fa fd fd fd fd fd fd fd fd fd fd
0x0c1e7fff88a0: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
0x0c1e7fff88b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1e7fff88c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1e7fff88d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==1956==ABORTING

CLOSE_CONNECTION on PATH_RESPONSE from wrong address

In this log, the following events occur:

  1. server sends PATH_CHALLENGE(X) to address A
  2. A responds with PATH_RESPONSE(X)
  3. server sends PATH_CHALLENGE(Y) to address B
  4. B responds with PATH_RESPONSE(X)
  5. server closes connection with error 0xa

I don't think (5) is forbidden, but it doesn't seem to be a good idea, since (4) could be a replay by an adversary of a delayed PATH_RESPONSE. It seems better to ignore PATH_RESPONSE frames with unexpected values and abandon the path challenge when it times out.

You might be able to repro this with the following docker container: kenmcmil/quictest:v0.9

The symptom is:

quic_server_test.ivy: line 513: error: assumption failed

It occurs fairly frequently in my tests.

Server log follows:


0.036   q_init quic.c:583 quant/socket 0.0.18/b50abb9 with libev/epoll 4.22 ready
        q_init quic.c:584 submit bug reports at https://github.com/NTAP/quant/issues
0.038   q_init quic.c:603 debug build, storing fuzzer corpus data
        q_bind quic.c:426 bound serv socket to port 4443
        main server.c:265 server waiting on lo port 4443
        q_rx_ready quic.c:778 waiting for conn to get ready to rx
0.223   rx_pkts conn.c:1036 new serv conn on port 4443 from 127.0.0.1:4989 w/cid=0:0000000000000003
        new_conn conn.c:1571 serv conn 0:0000000000000003 on port 4443 created
        new_conn conn.c:1573 serv conn 0:0000000000000003 state conn_clsd -> conn_idle
0.223   log_pkt pkt.c:103 RX from=127.0.0.1:4989 len=1216 0xc0=Initial vers=0xff000012 dcid=0000000000000003 scid=0000000000000002 tok= len=1207 nr=0
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=0 len=267 [seq]
        dec_frames frame.c:1024 PADDING len=918
        rx_pkt conn.c:808 serv conn 0:0000000000000003 state conn_idle -> conn_opng
        update_act_scid conn.c:570 hshk switch to scid 0:2c87caf7b052b67f for conn_opng serv conn (was 0:0000000000000003)
        on_ch tls.c:291 	SNI = servername
        on_ch tls.c:314 	ALPN = hq-17 (and maybe others, none supported, ignoring)
        chk_tp tls.c:494 	initial_max_stream_data_bidi_local = 8192
        chk_tp tls.c:506 	initial_max_data = 16384
        chk_tp tls.c:523 	idle_timeout = 60
        chk_tp tls.c:501 	initial_max_stream_data_bidi_remote = 8192
        chk_tp tls.c:488 	initial_max_stream_data_uni = 8192
0.228   rx_crypto conn.c:677 serv conn 0:2c87caf7b052b67f state conn_opng -> conn_estb
0.228   log_pkt pkt.c:153 TX to=127.0.0.1:4989 0xc0=Initial vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f tok=75f527fba8fa9a3a51fb189f7baf512ff79dc3a1ab53d47480588157e742a3182c87caf7b052b67f len=0 nr=0
        enc_ack_frame frame.c:1302 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1228 PADDING len=17
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=0 len=155 
        on_pkt_sent recovery.c:321 in_flight=219 (+219), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
0.228   log_pkt pkt.c:162 TX to=127.0.0.1:4989 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=0 nr=0
        enc_padding_frame frame.c:1228 PADDING len=23
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=0 len=1188 
        on_pkt_sent recovery.c:321 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
0.228   log_pkt pkt.c:162 TX to=127.0.0.1:4989 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=0 nr=1
        enc_padding_frame frame.c:1228 PADDING len=23
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=1188 len=205 
        on_pkt_sent recovery.c:321 in_flight=1740 (+269), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
        coalesce pkt.c:200 coalescing 269-byte Handshake pkt behind 219-byte Initial pkt
        log_sent_pkts conn.c:260 serv epoch 0 unacked: 0 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 0 1 
0.380   log_pkt pkt.c:103 RX from=127.0.0.1:4989 len=1216 0xc0=Initial vers=0xff000012 dcid=2c87caf7b052b67f scid=0000000000000002 tok= len=1207 nr=16
        dec_ack_frame frame.c:473 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        dec_ack_frame frame.c:533 ECN verification failed for serv conn 0:2c87caf7b052b67f
        detect_lost_pkts recovery.c:230 in_flight=1521 (-219), cwnd=12219 (+219), ssthresh=0 (+0), srtt=0.157 (+0.157), rttvar=0.078 (+0.078)
        has_pval_wnd conn.h:439 serv conn 0:2c87caf7b052b67f path val lim reached: 1740 + 2020 >= 3696
        dec_frames frame.c:1024 PADDING len=1184
0.536   on_ld_alarm recovery.c:246 crypto RTX #1 on serv conn 0:2c87caf7b052b67f
        detect_lost_pkts recovery.c:225 serv Handshake pkt 0 considered lost
        detect_lost_pkts recovery.c:225 serv Handshake pkt 1 considered lost
        detect_lost_pkts recovery.c:230 in_flight=0 (-1521), cwnd=12219 (+0), ssthresh=0 (+0), srtt=0.157 (+0.000), rttvar=0.078 (+0.000)
0.536   log_pkt pkt.c:162 TX to=127.0.0.1:4989 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=1228 nr=2
        enc_padding_frame frame.c:1228 PADDING len=19
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=0 len=1188 [RTX] 
        on_pkt_sent recovery.c:321 in_flight=1252 (+1252), cwnd=12219 (+0), ssthresh=0 (+0), srtt=0.157 (+0.000), rttvar=0.078 (+0.000)
0.536   log_pkt pkt.c:162 TX to=127.0.0.1:4989 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=245 nr=3
        enc_padding_frame frame.c:1228 PADDING len=18
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=1188 len=205 [RTX] 
        on_pkt_sent recovery.c:321 in_flight=1521 (+269), cwnd=12219 (+0), ssthresh=0 (+0), srtt=0.157 (+0.000), rttvar=0.078 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 2 3 
0.595   abandon_pn pn.c:122 abandon serv epoch 0 processing
        dec_pkt_hdr_remainder pkt.c:898 clnt path validated
0.595   log_pkt pkt.c:112 RX from=127.0.0.1:4989 len=51 0xe0=Handshake vers=0xff000012 dcid=2c87caf7b052b67f scid=0000000000000002 len=43 nr=0
        dec_ack_frame frame.c:473 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        dec_ack_frame frame.c:473 ACK 0x02= lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        dec_frames frame.c:1024 PADDING len=15
1.014   rx_pkts conn.c:1098 pkt came from new peer 127.0.0.1:4990, probing
1.014   log_pkt pkt.c:121 RX from=127.0.0.1:4990 len=1232 0x4a=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=0
        rx_pkts conn.c:1166 rx invalid 1232-byte Short pkt, ignoring
1.163   on_ld_alarm recovery.c:246 crypto RTX #2 on serv conn 0:2c87caf7b052b67f
        detect_lost_pkts recovery.c:225 serv Handshake pkt 2 considered lost
        detect_lost_pkts recovery.c:225 serv Handshake pkt 3 considered lost
        detect_lost_pkts recovery.c:230 in_flight=0 (-1521), cwnd=12219 (+0), ssthresh=0 (+0), srtt=0.157 (+0.000), rttvar=0.078 (+0.000)
1.163   log_pkt pkt.c:162 TX to=127.0.0.1:4990 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=1228 nr=4
        enc_ack_frame frame.c:1302 ACK 0x02= lg=0 delay=70987 (567896 usec) cnt=0 block=0 [0]
        enc_padding_frame frame.c:1228 PADDING len=11
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=0 len=1188 [RTX] 
        on_pkt_sent recovery.c:321 in_flight=1252 (+1252), cwnd=12219 (+0), ssthresh=0 (+0), srtt=0.157 (+0.000), rttvar=0.078 (+0.000)
1.163   log_pkt pkt.c:162 TX to=127.0.0.1:4990 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=245 nr=5
        enc_padding_frame frame.c:1228 PADDING len=18
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=1188 len=205 [RTX] 
        on_pkt_sent recovery.c:321 in_flight=1521 (+269), cwnd=12219 (+0), ssthresh=0 (+0), srtt=0.157 (+0.000), rttvar=0.078 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 4 5 
1.531   log_pkt pkt.c:112 RX from=127.0.0.1:4989 len=116 0xe0=Handshake vers=0xff000012 dcid=2c87caf7b052b67f scid=0000000000000002 len=108 nr=18
        log_stream_or_crypto_frame frame.c:134 CRYPTO off=0 len=52 [seq]
        dec_ack_frame frame.c:473 ACK 0x02= lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
        dec_ack_frame frame.c:473 ACK 0x02= lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        dec_ack_frame frame.c:473 ACK 0x02= lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
        detect_lost_pkts recovery.c:230 in_flight=269 (-1252), cwnd=13471 (+1252), ssthresh=0 (+0), srtt=0.183 (+0.026), rttvar=0.112 (+0.033)
        on_ld_alarm recovery.c:246 crypto RTX #1 on serv conn 0:2c87caf7b052b67f
        dec_ack_frame frame.c:473 ACK 0x02= lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
        detect_lost_pkts recovery.c:230 in_flight=0 (-269), cwnd=13740 (+269), ssthresh=0 (+0), srtt=0.206 (+0.023), rttvar=0.130 (+0.018)
        dec_frames frame.c:1024 PADDING len=15
1.531   log_pkt pkt.c:162 TX to=127.0.0.1:4990 0xe0=Handshake vers=0xff000012 dcid=0000000000000002 scid=2c87caf7b052b67f len=0 nr=6
        enc_ack_frame frame.c:1302 ACK 0x02= lg=18 delay=0 (0 usec) cnt=0 block=0 [18]
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
1.791   log_pkt pkt.c:121 RX from=127.0.0.1:4989 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=8
        new_stream stream.c:104 serv conn 0:2c87caf7b052b67f strm 8 (bi, clnt) state strm_idle -> strm_open
        dec_stream_or_crypto_frame frame.c:320 serv conn 0:2c87caf7b052b67f strm 8 (bi, clnt) state strm_open -> strm_hcrm
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0f=FIN|LEN|OFF id=8/20 off=0/65535 len=16 coff=16/393210 [seq]
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x953a
        new_stream stream.c:104 serv conn 0:2c87caf7b052b67f strm 4 (bi, clnt) state strm_idle -> strm_open
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x3093
        dec_frames frame.c:1024 PADDING len=1177
        rx conn.c:1281 q_rx_ready(0, 0) done, exiting event loop
        q_rx_ready quic.c:786 serv conn 0:2c87caf7b052b67f ready to rx
        q_accept quic.c:480 serv conn 0:2c87caf7b052b67f accepted from clnt 127.0.0.1:4989, cipher AES256-GCM
        q_read quic.c:336 non-blocking read on serv conn 0:2c87caf7b052b67f
        q_read quic.c:376 read 16 bytes in 0.000 sec (156.479 Mb/s) on serv conn 0:2c87caf7b052b67f strm 8
        serve_cb server.c:127 conn 0:2c87caf7b052b67f str 8 serving URL /index.html
        q_write quic.c:265 writing 4 bytes in 1 buf on serv conn 0:2c87caf7b052b67f strm 8 and closing
1.791   log_pkt pkt.c:171 TX to=127.0.0.1:4990 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=0
        enc_ack_frame frame.c:1302 ACK 0x02= lg=8 delay=71 (568 usec) cnt=0 block=0 [8]
        enc_path_challenge_frame frame.c:1570 PATH_CHALLENGE data=cc385a9caa788bd5
        enc_padding_frame frame.c:1228 PADDING len=23
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0b=FIN|LEN id=8/20 off=0/8192 len=4 coff=0/16384 
        enc_new_token_frame frame.c:1619 NEW_TOKEN len=40 tok=75f527fba8fa9a3a51fb189f7baf512ff79dc3a1ab53d47480588157e742a3182c87caf7b052b67f
        enc_new_cid_frame frame.c:1598 NEW_CONNECTION_ID seq=1 len=8 cid=1:3ebf45204136e689 srt=193e17f4f22afc67a65598a20278018b
        on_pkt_sent recovery.c:321 in_flight=137 (+137), cwnd=13740 (+0), ssthresh=0 (+0), srtt=0.206 (+0.000), rttvar=0.130 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 0 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
2.056   log_pkt pkt.c:121 RX from=127.0.0.1:4990 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=14
        new_stream stream.c:104 serv conn 0:2c87caf7b052b67f strm 16 (bi, clnt) state strm_idle -> strm_open
        dec_stream_or_crypto_frame frame.c:320 serv conn 0:2c87caf7b052b67f strm 16 (bi, clnt) state strm_open -> strm_hcrm
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0f=FIN|LEN|OFF id=16/20 off=0/65535 len=16 coff=32/393210 [seq]
        dec_frames frame.c:1024 PADDING len=1185
2.081   ack_alarm conn.c:1409 ACK timer fired on serv conn 0:2c87caf7b052b67f
2.081   log_pkt pkt.c:171 TX to=127.0.0.1:4990 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=1
        enc_ack_frame frame.c:1302 ACK 0x02= lg=14 delay=3183 (25464 usec) cnt=1 block=0 [14]
        enc_ack_frame frame.c:1293 ACK gap=4 block=0 [8]
        enc_path_challenge_frame frame.c:1570 PATH_CHALLENGE data=cc385a9caa788bd5
        on_pkt_sent recovery.c:321 in_flight=180 (+43), cwnd=13740 (+0), ssthresh=0 (+0), srtt=0.206 (+0.000), rttvar=0.130 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 0 1 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
2.603   log_pkt pkt.c:121 RX from=127.0.0.1:4990 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=22
        dec_ack_frame frame.c:473 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
        on_pkt_acked recovery.c:451 q_write(c, s) done, exiting event loop
        detect_lost_pkts recovery.c:230 in_flight=43 (-137), cwnd=13877 (+137), ssthresh=0 (+0), srtt=0.282 (+0.076), rttvar=0.249 (+0.119)
        new_stream stream.c:104 serv conn 0:2c87caf7b052b67f strm 20 (bi, clnt) state strm_idle -> strm_open
        dec_stream_or_crypto_frame frame.c:320 serv conn 0:2c87caf7b052b67f strm 20 (bi, clnt) state strm_open -> strm_hcrm
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0f=FIN|LEN|OFF id=20/44 off=0/65535 len=16 coff=48/393210 [seq]
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x067c
        dec_path_response_frame frame.c:838 PATH_RESPONSE data=cc385a9caa788bd5
        dec_path_response_frame frame.c:860 migration from 127.0.0.1:4989 to 127.0.0.1:4990 complete
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x6748
        dec_path_response_frame frame.c:838 PATH_RESPONSE data=cc385a9caa788bd5
        dec_frames frame.c:1024 PADDING len=1154
        q_write quic.c:308 serv conn 0:2c87caf7b052b67f strm 8 (bi, clnt) state strm_hcrm -> strm_clsd
        q_write quic.c:315 wrote 4 bytes in 0.812 sec (39.406 b/s) on serv conn 0:2c87caf7b052b67f strm 8 and closed
        free_stream stream.c:145 freeing strm 8 on serv conn 0:2c87caf7b052b67f
        q_read quic.c:336 non-blocking read on serv conn 0:2c87caf7b052b67f
        q_read quic.c:376 read 16 bytes in 0.000 sec (152.381 Mb/s) on serv conn 0:2c87caf7b052b67f strm 16
        serve_cb server.c:127 conn 0:2c87caf7b052b67f str 16 serving URL /index.html
        q_write quic.c:265 writing 4 bytes in 1 buf on serv conn 0:2c87caf7b052b67f strm 16 and closing
2.604   log_pkt pkt.c:171 TX to=127.0.0.1:4990 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=2
        enc_ack_frame frame.c:1302 ACK 0x02= lg=22 delay=95 (760 usec) cnt=1 block=0 [22]
        enc_ack_frame frame.c:1293 ACK gap=6 block=0 [14]
        enc_max_streams_frame frame.c:1472 MAX_STREAMS 0x12=bi max=12
        enc_padding_frame frame.c:1228 PADDING len=28
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0b=FIN|LEN id=16/44 off=0/8192 len=4 coff=4/16384 
        on_pkt_sent recovery.c:321 in_flight=111 (+68), cwnd=13877 (+0), ssthresh=0 (+0), srtt=0.282 (+0.000), rttvar=0.249 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 1 2 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
2.994   on_ld_alarm recovery.c:260 TT alarm ep 3 on serv conn 0:2c87caf7b052b67f
        detect_lost_pkts recovery.c:225 serv Short pkt 1 considered lost
        detect_lost_pkts recovery.c:230 in_flight=68 (-43), cwnd=6938 (-6939), ssthresh=6938 (+6938), srtt=0.282 (+0.000), rttvar=0.249 (+0.000)
3.041   rx_pkts conn.c:1098 pkt came from new peer 127.0.0.1:4989, probing
3.041   log_pkt pkt.c:121 RX from=127.0.0.1:4989 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=34
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xc997
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xcaff
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xfb34
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xb57c
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x64b2
        dec_ack_frame frame.c:473 ACK 0x02= lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
        on_pkt_acked recovery.c:451 q_write(c, s) done, exiting event loop
        detect_lost_pkts recovery.c:230 in_flight=0 (-68), cwnd=6938 (+0), ssthresh=6938 (+0), srtt=0.301 (+0.019), rttvar=0.225 (-0.023)
3.041   log_pkt pkt.c:171 TX to=127.0.0.1:4989 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=3
        enc_path_challenge_frame frame.c:1570 PATH_CHALLENGE data=95e3e39055ea64a8
        on_pkt_sent recovery.c:321 in_flight=35 (+35), cwnd=6938 (+0), ssthresh=6938 (+0), srtt=0.301 (+0.000), rttvar=0.225 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 3 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
        dec_frames frame.c:1024 PADDING len=1180
        q_write quic.c:308 serv conn 0:2c87caf7b052b67f strm 16 (bi, clnt) state strm_hcrm -> strm_clsd
        q_write quic.c:315 wrote 4 bytes in 0.438 sec (73.043 b/s) on serv conn 0:2c87caf7b052b67f strm 16 and closed
        free_stream stream.c:145 freeing strm 16 on serv conn 0:2c87caf7b052b67f
        q_read quic.c:336 non-blocking read on serv conn 0:2c87caf7b052b67f
        q_read quic.c:376 read 16 bytes in 0.000 sec (140.969 Mb/s) on serv conn 0:2c87caf7b052b67f strm 20
        serve_cb server.c:127 conn 0:2c87caf7b052b67f str 20 serving URL /index.html
        q_write quic.c:265 writing 4 bytes in 1 buf on serv conn 0:2c87caf7b052b67f strm 20 and closing
3.042   log_pkt pkt.c:171 TX to=127.0.0.1:4989 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=4
        enc_ack_frame frame.c:1302 ACK 0x02= lg=34 delay=124 (992 usec) cnt=0 block=0 [34]
        enc_path_challenge_frame frame.c:1570 PATH_CHALLENGE data=95e3e39055ea64a8
        enc_padding_frame frame.c:1228 PADDING len=23
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0b=FIN|LEN id=20/44 off=0/8192 len=4 coff=8/16384 
        on_pkt_sent recovery.c:321 in_flight=103 (+68), cwnd=6938 (+0), ssthresh=6938 (+0), srtt=0.301 (+0.000), rttvar=0.225 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 4 3 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
4.270   on_ld_alarm recovery.c:268 PTO alarm #0 on serv conn 0:2c87caf7b052b67f
4.270   log_pkt pkt.c:171 TX to=127.0.0.1:4989 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=5
        enc_padding_frame frame.c:1228 PADDING len=35
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0b=FIN|LEN id=20/44 off=0/8192 len=4 coff=12/16384 [RTX] 
        on_pkt_sent recovery.c:321 in_flight=171 (+68), cwnd=6938 (+0), ssthresh=6938 (+0), srtt=0.301 (+0.000), rttvar=0.225 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 5 3 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
4.271   log_pkt pkt.c:171 TX to=127.0.0.1:4989 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=6
        enc_path_challenge_frame frame.c:1570 PATH_CHALLENGE data=95e3e39055ea64a8
        on_pkt_sent recovery.c:321 in_flight=206 (+35), cwnd=6938 (+0), ssthresh=6938 (+0), srtt=0.301 (+0.000), rttvar=0.225 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 3 5 6 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
4.350   log_pkt pkt.c:121 RX from=127.0.0.1:4989 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=7
        dec_path_response_frame frame.c:838 PATH_RESPONSE data=95e3e39055ea64a8
        dec_path_response_frame frame.c:860 migration from 127.0.0.1:4990 to 127.0.0.1:4989 complete
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xb409
        dec_path_response_frame frame.c:838 PATH_RESPONSE data=95e3e39055ea64a8
        dec_ack_frame frame.c:473 ACK 0x02= lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
        dec_ack_frame frame.c:473 ACK 0x02= lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
        dec_ack_frame frame.c:473 ACK 0x02= lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
        detect_lost_pkts recovery.c:230 in_flight=171 (-35), cwnd=6944 (+6), ssthresh=6938 (+0), srtt=0.427 (+0.126), rttvar=0.421 (+0.196)
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x2366
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x1539
        dec_frames frame.c:1024 PADDING len=1160
4.376   ack_alarm conn.c:1409 ACK timer fired on serv conn 0:2c87caf7b052b67f
4.376   log_pkt pkt.c:171 TX to=127.0.0.1:4989 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=7
        enc_ack_frame frame.c:1302 ACK 0x02= lg=34 delay=166831 (1334648 usec) cnt=1 block=0 [34]
        enc_ack_frame frame.c:1293 ACK gap=25 block=0 [7]
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 5 6 7 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
4.566   rx_pkts conn.c:1098 pkt came from new peer 127.0.0.1:4990, probing
4.566   log_pkt pkt.c:121 RX from=127.0.0.1:4990 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=3
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xc8ef
        dec_frames frame.c:1024 PADDING len=1201
4.566   log_pkt pkt.c:171 TX to=127.0.0.1:4990 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=8
        enc_ack_frame frame.c:1302 ACK 0x02= lg=34 delay=190601 (1524808 usec) cnt=2 block=0 [34]
        enc_ack_frame frame.c:1293 ACK gap=25 block=0 [7]
        enc_ack_frame frame.c:1293 ACK gap=2 block=0 [3]
        enc_path_challenge_frame frame.c:1570 PATH_CHALLENGE data=6754350bebcc1f36
        on_pkt_sent recovery.c:321 in_flight=218 (+47), cwnd=6944 (+0), ssthresh=6938 (+0), srtt=0.427 (+0.000), rttvar=0.421 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 8 5 6 7 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
5.609   log_pkt pkt.c:121 RX from=127.0.0.1:4990 len=1216 0x40=Short kyph=0 spin=0 dcid=2c87caf7b052b67f nr=1
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0xf741
        dec_ack_frame frame.c:473 ACK 0x02= lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
        detect_lost_pkts recovery.c:230 in_flight=183 (-35), cwnd=6950 (+6), ssthresh=6938 (+0), srtt=0.541 (+0.114), rttvar=0.544 (+0.123)
        dec_stop_sending_frame frame.c:803 STOP_SENDING id=4 err=0x75c5
        dec_ack_frame frame.c:473 ACK 0x02= lg=8 delay=0 (0 usec) cnt=0 block=0 [8]
        detect_lost_pkts recovery.c:225 serv Short pkt 5 considered lost
        detect_lost_pkts recovery.c:225 serv Short pkt 7 considered lost
        detect_lost_pkts recovery.c:230 in_flight=68 (-115), cwnd=3479 (-3471), ssthresh=3479 (-3459), srtt=0.604 (+0.063), rttvar=0.533 (-0.010)
5.610   log_pkt pkt.c:171 TX to=127.0.0.1:4990 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=9
        enc_padding_frame frame.c:1228 PADDING len=35
        log_stream_or_crypto_frame frame.c:129 STREAM 0x0b=FIN|LEN id=20/44 off=0/8192 len=4 coff=12/16384 [RTX] 
        on_pkt_sent recovery.c:321 in_flight=136 (+68), cwnd=3479 (+0), ssthresh=3479 (+0), srtt=0.604 (+0.000), rttvar=0.533 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 9 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 
        dec_ack_frame frame.c:473 ACK 0x02= lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
        dec_path_response_frame frame.c:838 PATH_RESPONSE data=95e3e39055ea64a8
        err_close conn.c:1311 PATH_RESPONSE 95e3e39055ea64a8 != 6754350bebcc1f36
        enter_closing conn.c:1379 closing/draining alarm in 3.945381 sec on serv conn 0:2c87caf7b052b67f
        enter_closing conn.c:1385 serv conn 0:2c87caf7b052b67f state conn_estb -> conn_clsg
5.610   log_pkt pkt.c:171 TX to=127.0.0.1:4990 0x40=Short kyph=0 spin=0 dcid=0000000000000002 nr=10
        enc_close_frame frame.c:1406 CONNECTION_CLOSE 0x1c=quic err=0x000a frame=0x1b rlen=51 reason=PATH_RESPONSE 95e3e39055ea64a8 != 6754350bebcc1f36
        on_pkt_sent recovery.c:321 in_flight=218 (+82), cwnd=3479 (+0), ssthresh=3479 (+0), srtt=0.604 (+0.000), rttvar=0.533 (+0.000)
        log_sent_pkts conn.c:260 serv epoch 1/3 unacked: 9 10 
        log_sent_pkts conn.c:260 serv epoch 2 unacked: 6 

Use after free closing stream on 404 error

Server log follows:

0.036   q_init quic.c:578 quant/socket 0.0.18/0c15831 with libev/epoll 4.22 ready
        q_init quic.c:579 submit bug reports at https://github.com/NTAP/quant/issues
0.037   q_init quic.c:599 debug build, storing fuzzer corpus data
        q_bind quic.c:421 bound serv socket to port 4443
        main server.c:257 server waiting on lo port 4443
        q_rx_ready quic.c:771 waiting for conn to get ready to rx
298.153   rx_pkts conn.c:983 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:0000000000000001
          new_conn conn.c:1509 serv conn 0:0000000000000001 on port 4443 created
          new_conn conn.c:1511 serv conn 0:0000000000000001 state conn_clsd -> conn_idle
298.153   log_pkt pkt.c:101 RX from=127.0.0.1:4987 len=1216 0xc0=Initial vers=0xff000012 dcid=0000000000000001 scid=0000000000000000 tok= len=1207 nr=0
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=248 [seq]
          dec_frames frame.c:988 PADDING len=937
          rx_pkt conn.c:767 serv conn 0:0000000000000001 state conn_idle -> conn_opng
          update_act_scid conn.c:532 hshk switch to scid 0:dd93f69319d21eeb for conn_opng serv conn (was 0:0000000000000001)
          on_ch tls.c:309 	SNI = 
          on_ch tls.c:327 	ALPN = hq-17 (and maybe others, none supported, ignoring)
          chk_tp tls.c:507 	initial_max_stream_data_bidi_local = 8192
          chk_tp tls.c:519 	initial_max_data = 16384
          chk_tp tls.c:536 	idle_timeout = 60
          chk_tp tls.c:514 	initial_max_stream_data_bidi_remote = 8192
          chk_tp tls.c:501 	initial_max_stream_data_uni = 8192
298.158   rx_crypto conn.c:630 serv conn 0:dd93f69319d21eeb state conn_opng -> conn_estb
          tx_stream conn.c:373 TX on serv conn 0:dd93f69319d21eeb strm -4 w/1 pkt in queue
298.158   log_pkt pkt.c:151 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb tok=83d262afc52ca00de6a9babe22cec60b31ba0fb31c965cf6a94cf0fcdfe7a0c4dd93f69319d21eeb len=0 nr=0
          enc_ack_frame frame.c:1266 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
          enc_padding_frame frame.c:1192 PADDING len=17
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=155 
          on_pkt_sent recovery.c:306 in_flight=219 (+219), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          tx_stream conn.c:373 TX on serv conn 0:dd93f69319d21eeb strm -2 w/2 pkts in queue
298.158   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb len=0 nr=0
          enc_padding_frame frame.c:1192 PADDING len=23
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=1188 
          on_pkt_sent recovery.c:306 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          enc_pkt pkt.c:569 clnt path validated
298.158   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb len=0 nr=1
          enc_padding_frame frame.c:1192 PADDING len=23
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=1188 len=201 
          on_pkt_sent recovery.c:306 in_flight=1736 (+265), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          enc_pkt pkt.c:569 clnt path validated
          coalesce pkt.c:198 coalescing 265-byte Handshake pkt behind 219-byte Initial pkt
          log_sent_pkts conn.c:240 serv epoch 0 unacked: 0 
          log_sent_pkts conn.c:240 serv epoch 2 unacked: 0 1 
298.354   on_ld_alarm recovery.c:236 crypto RTX #1 on serv conn 0:dd93f69319d21eeb
          detect_lost_pkts recovery.c:214 serv Initial pkt 0 considered lost
          detect_lost_pkts recovery.c:220 in_flight=1517 (-219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          detect_lost_pkts recovery.c:214 serv Handshake pkt 0 considered lost
          detect_lost_pkts recovery.c:214 serv Handshake pkt 1 considered lost
          detect_lost_pkts recovery.c:220 in_flight=0 (-1517), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          tx_stream conn.c:373 TX on serv conn 0:dd93f69319d21eeb strm -4 w/1 pkt in queue
298.354   log_pkt pkt.c:151 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb tok=83d262afc52ca00de6a9babe22cec60b31ba0fb31c965cf6a94cf0fcdfe7a0c4dd93f69319d21eeb len=194 nr=1
          enc_padding_frame frame.c:1192 PADDING len=18
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=155 [RTX] 
          on_pkt_sent recovery.c:306 in_flight=219 (+219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          tx_stream conn.c:373 TX on serv conn 0:dd93f69319d21eeb strm -2 w/2 pkts in queue
298.354   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb len=1228 nr=2
          enc_padding_frame frame.c:1192 PADDING len=19
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=1188 [RTX] 
          on_pkt_sent recovery.c:306 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          enc_pkt pkt.c:569 clnt path validated
298.354   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb len=241 nr=3
          enc_padding_frame frame.c:1192 PADDING len=18
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=1188 len=201 [RTX] 
          on_pkt_sent recovery.c:306 in_flight=1736 (+265), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          enc_pkt pkt.c:569 clnt path validated
          coalesce pkt.c:198 coalescing 265-byte Handshake pkt behind 219-byte Initial pkt
          log_sent_pkts conn.c:240 serv epoch 0 unacked: 1 
          log_sent_pkts conn.c:240 serv epoch 2 unacked: 2 3 
298.397   abandon_pn pn.c:122 abandon serv epoch 0 processing
298.397   log_pkt pkt.c:110 RX from=127.0.0.1:4987 len=96 0xe0=Handshake vers=0xff000012 dcid=dd93f69319d21eeb scid=0000000000000000 len=88 nr=0
          log_stream_or_crypto_frame frame.c:133 CRYPTO off=0 len=52 [seq]
          dec_frames frame.c:988 PADDING len=15
298.398   log_pkt pkt.c:160 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000012 dcid=0000000000000000 scid=dd93f69319d21eeb len=0 nr=4
          enc_ack_frame frame.c:1266 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
          log_sent_pkts conn.c:240 serv epoch 2 unacked: 4 2 3 
298.560   log_pkt pkt.c:119 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=dd93f69319d21eeb nr=0
          new_stream stream.c:105 serv conn 0:dd93f69319d21eeb strm 4 (bi, clnt) state strm_idle -> strm_open
          dec_stream_or_crypto_frame frame.c:316 serv conn 0:dd93f69319d21eeb strm 4 (bi, clnt) state strm_open -> strm_hcrm
          log_stream_or_crypto_frame frame.c:128 STREAM 0x0f=FIN|LEN|OFF id=4/20 off=0/65535 len=16 coff=16/393210 [seq]
          dec_frames frame.c:988 PADDING len=1185
          rx conn.c:1217 q_rx_ready(0, 0) done, exiting event loop
          q_rx_ready quic.c:779 serv conn 0:dd93f69319d21eeb ready to rx
          q_accept quic.c:475 serv conn 0:dd93f69319d21eeb accepted from clnt 127.0.0.1:4987, cipher AES256-GCM
          q_read quic.c:331 non-blocking read on serv conn 0:dd93f69319d21eeb
          q_read quic.c:371 read 16 bytes in 0.000 sec (131.823 Mb/s) on serv conn 0:dd93f69319d21eeb strm 4
          serve_cb server.c:119 conn 0:dd93f69319d21eeb str 4 serving URL /index.html
          q_close quic.c:644 closing serv conn 0:dd93f69319d21eeb on port 4443 w/err 0x0003 (404 Not Found)
          q_close quic.c:658 serv conn 0:dd93f69319d21eeb state conn_estb -> conn_qlse
          enter_closing conn.c:1315 closing/draining alarm in 0.300000 sec on serv conn 0:dd93f69319d21eeb
          enter_closing conn.c:1321 serv conn 0:dd93f69319d21eeb state conn_qlse -> conn_clsg
298.560   log_pkt pkt.c:169 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=0
          enc_ack_frame frame.c:1266 ACK 0x02= lg=0 delay=66 (528 usec) cnt=0 block=0 [0]
          enc_close_frame frame.c:1376 CONNECTION_CLOSE 0x1d=app err=0x0003 rlen=13 reason=404 Not Found
          enc_new_token_frame frame.c:1583 NEW_TOKEN len=40 tok=83d262afc52ca00de6a9babe22cec60b31ba0fb31c965cf6a94cf0fcdfe7a0c4dd93f69319d21eeb
          enc_new_cid_frame frame.c:1562 NEW_CONNECTION_ID seq=1 len=8 cid=1:59838cef1391dfa6 tok=49ddfcd3fc679e8560b9d8605d6472fb
          enc_streams_blocked_frame frame.c:1495 STREAMS_BLOCKED 0x16=bi lim=0
          on_pkt_sent recovery.c:306 in_flight=1637 (-99), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
          log_sent_pkts conn.c:240 serv epoch 1/3 unacked: 0 
          log_sent_pkts conn.c:240 serv epoch 2 unacked: 4 2 3 
298.860   log_pkt pkt.c:101 RX from=127.0.0.1:4987 len=2020 0xc2=Initial vers=0xff000012 dcid=dd93f69319d21eeb scid=0000000000000000 tok= len=1207 nr=0
          rx_pkts conn.c:1091 ignoring 2020-byte Initial pkt due to abandoned processing
298.861   enter_closed conn.c:1274 serv conn 0:dd93f69319d21eeb state conn_clsg -> conn_clsd
          enter_closed conn.c:1277 <any>(c, 0) done, exiting event loop
          free_stream stream.c:146 freeing strm 4 on serv conn 0:dd93f69319d21eeb
=================================================================
==29615==ERROR: AddressSanitizer: heap-use-after-free on address 0x60e000000998 at pc 0x5655230a36b8 bp 0x7fff9f262d50 sp 0x7fff9f262d40
READ of size 4 at 0x60e000000998 thread T0
    #0 0x5655230a36b7 in q_peer_has_closed_stream /home/mcmillan/projects/quant/lib/src/quic.c:735
    #1 0x565523085a58 in main /home/mcmillan/projects/quant/bin/server.c:307
    #2 0x7fae13aa6b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #3 0x5655230833c9 in _start (/home/mcmillan/projects/quant/Debug/bin/server+0x1e13c9)

0x60e000000998 is located 152 bytes inside of 160-byte region [0x60e000000900,0x60e0000009a0)
freed by thread T0 here:
    #0 0x7fae15aa67b8 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde7b8)
    #1 0x5655230a9467 in free_stream /home/mcmillan/projects/quant/lib/src/stream.c:165
    #2 0x5655230fbfcd in free_conn /home/mcmillan/projects/quant/lib/src/conn.c:1554
    #3 0x56552309a213 in q_close /home/mcmillan/projects/quant/lib/src/quic.c:665
    #4 0x565523083670 in send_err /home/mcmillan/projects/quant/bin/server.c:109
    #5 0x565523084146 in serve_cb /home/mcmillan/projects/quant/bin/server.c:156
    #6 0x7fae157c2610 in http_parser_execute (/usr/lib/x86_64-linux-gnu/libhttp_parser.so.2.7.1+0x3610)

previously allocated by thread T0 here:
    #0 0x7fae15aa6d38 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded38)
    #1 0x5655230ab306 in new_stream /home/mcmillan/projects/quant/lib/src/stream.c:99
    #2 0x56552317986f in dec_stream_or_crypto_frame /home/mcmillan/projects/quant/lib/src/frame.c:248
    #3 0x565523189080 in dec_frames /home/mcmillan/projects/quant/lib/src/frame.c:1010
    #4 0x5655230db2d9 in rx_pkt /home/mcmillan/projects/quant/lib/src/conn.c:851
    #5 0x5655230f827f in rx_pkts /home/mcmillan/projects/quant/lib/src/conn.c:1130
    #6 0x5655230fd5be in rx /home/mcmillan/projects/quant/lib/src/conn.c:1171
    #7 0x7fae14b9ad72 in ev_invoke_pending (/usr/lib/x86_64-linux-gnu/libev.so.4+0x3d72)

SUMMARY: AddressSanitizer: heap-use-after-free /home/mcmillan/projects/quant/lib/src/quic.c:735 in q_peer_has_closed_stream
Shadow bytes around the buggy address:
  0x0c1c7fff80e0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x0c1c7fff80f0: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
  0x0c1c7fff8100: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c1c7fff8110: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
  0x0c1c7fff8120: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c1c7fff8130: fd fd fd[fd]fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1c7fff8140: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1c7fff8150: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1c7fff8160: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1c7fff8170: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1c7fff8180: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==29615==ABORTING

Failed to send Retry packet

When receiving an initial packet with version 0xff000010, the quant server seems to run into some kind of problem sending a Retry packet. There are also some reports of misaligned accesses, but I don't know if these are relevant. Here is the log:

0.033   q_init quic.c:546 quant/socket 0.0.17/4ed3af4 with libev/epoll 4.22 ready
        q_init quic.c:547 submit bug reports at https://github.com/NTAP/quant/issues
0.035   q_init quic.c:567 debug build, storing fuzzer corpus data
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:185:13: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:186:13: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:187:13: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 40 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:188:11: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 40 00 40 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:189:15: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 40 00 40 11  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
        q_bind quic.c:393 bound serv socket on port 4443
        main server.c:240 server waiting on lo port 4443
        q_rx_ready quic.c:722 waiting for conn to get ready to rx
0.217   rx_pkts conn.c:998 cannot find conn 0:0000000000000001 for 2020-byte Retry pkt
0.217   log_pkt pkt.c:87 RX from=127.0.0.1:4987 len=2020 0xff=Retry vers=0xff000010 dcid=0000000000000001 scid=0000000000000000 odcid=0044b7d0f9d0d265574f0e342eea5e7ffb00 tok=fe613551bf34d3cbc25f41ad024613f39c480db6662590295619c6359c271e88f29abe91e816ed653411f7fb8a7a475826a3134504674da697eef2c7863e3...
        rx_pkts conn.c:1018 ignoring unexpected Retry pkt for conn 0:0000000000000001


q_close_stream not working as intended?

The example server and client work fine for me (branch 14).

However, when I change all q_write*s to q_close_streams in the example server (see send_err and serve_cb here), they start behaving weird.

Ultimately the client runs into a timeout in q_readall_str and closes the connection. However, while the client is "waiting" for the timeout, the server's RTO alarm is firing every 0.010 seconds.

It seems to me that something is going wrong here. My suggestion would be that somehow the server is not sending out a FIN to the client here. Since it works fine when the FIN is sent together with actual data (as is the case in the unmodified example), maybe no FIN is sent when there is no other data to send? Is this actually intended behavior? If so, this behavior would be very non-obvious from looking at the API.

This behavior was detected in the course of the SYMBIOSYS research project at COMSYS, RWTH Aachen University. This research is supported by the European Research Council (ERC) under the EU's Horizon 2020 Research and Innovation Programme grant agreement n. 647295 (SYMBIOSYS).

Threadsafety question

Hello! Thanks for your excellent work!
I'm trying to use your library in my project, and I have a question: is quant library thread-safe in any degree ?
Should I use external locking on q_bind\q_ready\q_accept (or any other) methods ? Can I run multiple independent server instances simultaneously, produced with multiple q_init calls ?

cmake runs successfully however the make after that fails with the following error(running on ubuntu 18.04 WSL) :-

Scanning dependencies of target client

[ 86%] Building C object bin/CMakeFiles/client.dir/client.c.o

[ 86%] Linking C executable client

[ 86%] Built target client

[ 90%] Generating dummy.eckey

using curve name prime256v1 instead of secp256r1

[ 90%] Generating dummy.key

[ 90%] Generating dummy.crt

req: Unknown digest addext

req: Use -help for summary.

test/CMakeFiles/test_conn.dir/build.make:65: recipe for target 'test/dummy.crt' failed

make[2]: *** [test/dummy.crt] Error 1

CMakeFiles/Makefile2:1690: recipe for target 'test/CMakeFiles/test_conn.dir/all' failed

make[1]: *** [test/CMakeFiles/test_conn.dir/all] Error 2

Makefile:140: recipe for target 'all' failed

make: *** [all] Error 2

out of bound array access

tls_certs[i].len = (size_t)i2d_X509(x509, &tls_certs[i].base);

Hi,

      do {
            X509 * const x509 = PEM_read_X509(fp, 0, 0, 0);
            if (x509 == 0)
                break;
            tls_certs[i].len = (size_t)i2d_X509(x509, &tls_certs[i].base);
            X509_free(x509);
        } while (i++ < TLS_MAX_CERTS);

this code fragment may crash the application. i++ increments the variable after the comparison. This may mean, that i can hold the value TLS_MAX_CERTS and thus cause the application to crash.

Best Regards

launching multiple instances on the same server

Hi,

I was planning to run both server-warp and client-warp on the same machine.
The server was launched using:

/bin/server-warp -i ens3f0 -p 5599

and the client with:

./bin/client-warp -b 10000000 -r 10 -i ens3f1 http://192.168.0.2:5599/100000000

But after executing the cmds above, the client-warp throws the error:

0.004    :0 ABORT: DIED [errno 12 = Cannot allocate memory]
        /usr/lib/x86_64-linux-gnu/libasan.so.5(+0xafeac) [0x7f78f69b0eac]
        util_die at /home/quicnic/quant/quant/lib/deps/warpcore/lib/src/util.c:399
        backend_init at /home/quicnic/quant/quant/lib/deps/warpcore/lib/src/backend_netmap.c:103 (discriminator 1)
        w_init at /home/quicnic/quant/quant/lib/deps/warpcore/lib/src/warpcore.c:453
        q_init at /home/quicnic/quant/quant/lib/src/quic.c:529 (discriminator 6)
        main at /home/quicnic/quant/quant/bin/client.c:314
        /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f78f573c09b]
        _start at ??:?

while dmesg, the info is like this:

[5783791.579411] 046.408974 [1023] netmap_obj_malloc         no more netmap_buf objects
[5783791.579415] 046.408979 [1192] netmap_new_bufs           no more buffers after 0 of 512
[5783791.579418] 046.408982 [1944] netmap_mem2_rings_create  Cannot allocate buffers for RX_ring
[5783796.679088] 051.508703 [1174] netmap_extra_free         breaking with head -1

Am I doing wrong on this? Can you please instruct me how to proceed?

p.s. I'm at 05651f6c1fb388dc43a04f06ac3fa7ca5396e877

Thanks,

Fails to open a bidirectional stream on STOP_SENDING

It looks like quant is not opening bidirectional streams on receipt of STOP_SENDING, per the change in draft-17. Here is the relevant language:

An endpoint opens a bidirectional stream when a MAX_STREAM_DATA or STOP_SENDING
frame is received from the peer for that stream.  Receiving a MAX_STREAM_DATA
frame for an unopened stream indicates that the remote peer has opened the
stream and is providing flow control credit.  Receiving a STOP_SENDING frame for
an unopened stream indicates that the remote peer no longer wishes to receive
data on this stream.  Either frame might arrive before a STREAM or
STREAM_DATA_BLOCKED frame if packets are lost or reordered.

I haven't checked whether it opens streams on MAX_STREAM_DATA.

Here' s log showing the receipt of STOP_SENDING on stream 4 at 18.579:


0.035   q_init quic.c:546 quant/socket 0.0.17/4ed3af4 with libev/epoll 4.22 ready
        q_init quic.c:547 submit bug reports at https://github.com/NTAP/quant/issues
0.037   q_init quic.c:567 debug build, storing fuzzer corpus data
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:185:13: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:186:13: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:187:13: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 40 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:188:11: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 40 00 40 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
/home/mcmillan/projects/quant/lib/deps/warpcore/lib/src/ip.h:189:15: runtime error: member access within misaligned address 0x60400000031e for type 'struct ip_hdr', which requires 4 byte alignment
0x60400000031e: note: pointer points here
 00 00 08 00 45 00  00 00 00 00 40 00 40 11  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00
             ^ 
        q_bind quic.c:393 bound serv socket on port 4443
        main server.c:240 server waiting on lo port 4443
        q_rx_ready quic.c:722 waiting for conn to get ready to rx
17.131   rx_pkts conn.c:938 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:0000000000000001
         new_conn conn.c:1437 serv conn 0:0000000000000001 on port 4443 created
         new_conn conn.c:1439 serv conn 0:0000000000000001 state conn_clsd -> conn_idle
17.131   log_pkt pkt.c:98 RX from=127.0.0.1:4987 len=1216 0xc0=Initial vers=0xff000011 dcid=0000000000000001 scid=0000000000000000 tok= len=1207 nr=0
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=248 [seq]
         dec_frames frame.c:957 PADDING len=937
         rx_pkt conn.c:728 serv conn 0:0000000000000001 state conn_idle -> conn_opng
         update_act_scid conn.c:491 hshk switch to scid 0:b6cade4590d7f7c7 for conn_opng serv conn (was 0:0000000000000001)
         on_ch tls.c:304 	SNI = 
         on_ch tls.c:329 	ALPN = hq-17
         chk_tp tls.c:502 	initial_max_stream_data_bidi_local = 8192
         chk_tp tls.c:514 	initial_max_data = 16384
         chk_tp tls.c:531 	idle_timeout = 60
         chk_tp tls.c:509 	initial_max_stream_data_bidi_remote = 8192
         chk_tp tls.c:496 	initial_max_stream_data_uni = 8192
17.134   rx_crypto conn.c:590 serv conn 0:b6cade4590d7f7c7 state conn_opng -> conn_estb
         tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -4 w/1 pkt in queue
17.134   log_pkt pkt.c:148 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 tok=a55552d894eba2d4dddb75571ebb54e03005083944052b165703e8bf10b705f9b6cade4590d7f7c7 len=0 nr=0
         enc_ack_frame frame.c:1235 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         enc_padding_frame frame.c:1161 PADDING len=17
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=155 
         on_pkt_sent recovery.c:295 in_flight=219 (+219), cwnd=12000 (+12000), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.200000 sec on serv conn 0:b6cade4590d7f7c7
         log_sent_pkts conn.c:229 epoch 0 unacked: 0 
         tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -2 w/2 pkts in queue
17.135   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=0 nr=0
         enc_padding_frame frame.c:1161 PADDING len=23
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=1188 
         on_pkt_sent recovery.c:295 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.200000 sec on serv conn 0:b6cade4590d7f7c7
         enc_pkt pkt.c:559 clnt path validated
17.135   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=0 nr=1
         enc_padding_frame frame.c:1161 PADDING len=23
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=1188 len=213 
         on_pkt_sent recovery.c:295 in_flight=1748 (+277), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.200000 sec on serv conn 0:b6cade4590d7f7c7
         enc_pkt pkt.c:559 clnt path validated
         log_sent_pkts conn.c:229 epoch 0 unacked: 0 
         log_sent_pkts conn.c:229 epoch 2 unacked: 0 1 
         coalesce pkt.c:195 coalescing 277-byte Handshake pkt behind 219-byte Initial pkt
17.331   on_ld_alarm recovery.c:223 crypto RTX #1 on serv conn 0:b6cade4590d7f7c7
         detect_lost_pkts recovery.c:186 Initial pkt 0 considered lost
         detect_lost_pkts recovery.c:207 in_flight=1529 (-219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         detect_lost_pkts recovery.c:186 Handshake pkt 0 considered lost
         detect_lost_pkts recovery.c:186 Handshake pkt 1 considered lost
         detect_lost_pkts recovery.c:207 in_flight=0 (-1529), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -4 w/1 pkt in queue
17.332   log_pkt pkt.c:148 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 tok=a55552d894eba2d4dddb75571ebb54e03005083944052b165703e8bf10b705f9b6cade4590d7f7c7 len=194 nr=1
         enc_padding_frame frame.c:1161 PADDING len=18
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=155 [RTX] 
         on_pkt_sent recovery.c:295 in_flight=219 (+219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.400000 sec on serv conn 0:b6cade4590d7f7c7
         log_sent_pkts conn.c:229 epoch 0 unacked: 0 1 
         log_sent_pkts conn.c:229 epoch 2 unacked: 0 1 
         tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -2 w/2 pkts in queue
17.332   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=1228 nr=2
         enc_padding_frame frame.c:1161 PADDING len=19
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=1188 [RTX] 
         on_pkt_sent recovery.c:295 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.400000 sec on serv conn 0:b6cade4590d7f7c7
         enc_pkt pkt.c:559 clnt path validated
17.332   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=253 nr=3
         enc_padding_frame frame.c:1161 PADDING len=18
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=1188 len=213 [RTX] 
         on_pkt_sent recovery.c:295 in_flight=1748 (+277), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.400000 sec on serv conn 0:b6cade4590d7f7c7
         enc_pkt pkt.c:559 clnt path validated
         log_sent_pkts conn.c:229 epoch 0 unacked: 0 1 
         log_sent_pkts conn.c:229 epoch 2 unacked: 0 1 2 3 
         coalesce pkt.c:195 coalescing 277-byte Handshake pkt behind 219-byte Initial pkt
17.644   log_pkt pkt.c:98 RX from=127.0.0.1:4987 len=1232 0xc0=Initial vers=0xff000011 dcid=b6cade4590d7f7c7 scid=0000000000000000 tok= len=1207 nr=8
         rx_pkts conn.c:1042 crypto fail on 1232-byte Initial pkt, ignoring
17.732   on_ld_alarm recovery.c:223 crypto RTX #2 on serv conn 0:b6cade4590d7f7c7
         detect_lost_pkts recovery.c:186 Initial pkt 1 considered lost
         detect_lost_pkts recovery.c:207 in_flight=1529 (-219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         detect_lost_pkts recovery.c:186 Handshake pkt 2 considered lost
         detect_lost_pkts recovery.c:186 Handshake pkt 3 considered lost
         detect_lost_pkts recovery.c:207 in_flight=0 (-1529), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -4 w/1 pkt in queue
17.732   log_pkt pkt.c:148 TX to=127.0.0.1:4987 0xc0=Initial vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 tok=a55552d894eba2d4dddb75571ebb54e03005083944052b165703e8bf10b705f9b6cade4590d7f7c7 len=194 nr=2
         enc_padding_frame frame.c:1161 PADDING len=18
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=155 [RTX] 
         on_pkt_sent recovery.c:295 in_flight=219 (+219), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.800000 sec on serv conn 0:b6cade4590d7f7c7
         log_sent_pkts conn.c:229 epoch 0 unacked: 0 1 2 
         log_sent_pkts conn.c:229 epoch 2 unacked: 0 1 2 3 
         tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -2 w/2 pkts in queue
17.733   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=1228 nr=4
         enc_padding_frame frame.c:1161 PADDING len=19
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=1188 [RTX] 
         on_pkt_sent recovery.c:295 in_flight=1471 (+1252), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.800000 sec on serv conn 0:b6cade4590d7f7c7
         enc_pkt pkt.c:559 clnt path validated
17.733   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=253 nr=5
         enc_padding_frame frame.c:1161 PADDING len=18
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=1188 len=213 [RTX] 
         on_pkt_sent recovery.c:295 in_flight=1748 (+277), cwnd=12000 (+0), ssthresh=0 (+0), srtt=0.000 (+0.000), rttvar=0.000 (+0.000)
         set_ld_timer recovery.c:123 crypto RTX alarm in 0.800000 sec on serv conn 0:b6cade4590d7f7c7
         enc_pkt pkt.c:559 clnt path validated
         log_sent_pkts conn.c:229 epoch 0 unacked: 0 1 2 
         log_sent_pkts conn.c:229 epoch 2 unacked: 0 1 2 3 4 5 
         coalesce pkt.c:195 coalescing 277-byte Handshake pkt behind 219-byte Initial pkt
18.320   abandon_pn pn.c:71 abandon serv epoch 0 processing
18.320   log_pkt pkt.c:107 RX from=127.0.0.1:4987 len=101 0xe0=Handshake vers=0xff000011 dcid=b6cade4590d7f7c7 scid=0000000000000000 len=93 nr=0
         log_stream_or_crypto_frame frame.c:125 CRYPTO off=0 len=52 [seq]
         dec_ack_frame frame.c:440 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
         on_pkt_acked recovery.c:402 0 was RTX'ed as 4
         detect_lost_pkts recovery.c:207 in_flight=1748 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=1.189 (+1.189), rttvar=0.595 (+0.595)
         set_ld_timer recovery.c:123 crypto RTX alarm in 1.790959 sec on serv conn 0:b6cade4590d7f7c7
         dec_frames frame.c:957 PADDING len=15
18.321   tx_stream conn.c:349 TX on serv conn 0:b6cade4590d7f7c7 strm -2 w/2 pkts in queue
         log_sent_pkts conn.c:229 epoch 2 unacked: 1 2 3 4 5 
18.321   log_pkt pkt.c:157 TX to=127.0.0.1:4987 0xe0=Handshake vers=0xff000011 dcid=0000000000000000 scid=b6cade4590d7f7c7 len=0 nr=6
         enc_ack_frame frame.c:1235 ACK 0x02= lg=0 delay=0 (0 usec) cnt=0 block=0 [0]
18.579   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4988, probing
18.579   log_pkt pkt.c:116 RX from=127.0.0.1:4988 len=1216 0x40=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         dec_stop_sending_frame frame.c:758 STOP_SENDING id=4 err=0x2f1f
         err_close conn.c:1184 unknown strm 4
         enter_closing conn.c:1252 closing/draining alarm in 5.946366 sec on serv conn 0:b6cade4590d7f7c7
         enter_closing conn.c:1258 serv conn 0:b6cade4590d7f7c7 state conn_estb -> conn_clsg
19.024   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4987, probing
19.025   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=2
         new_stream stream.c:103 serv conn 0:b6cade4590d7f7c7 strm 16 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:292 serv conn 0:b6cade4590d7f7c7 strm 16 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:120 STREAM 0x0f=FIN|LEN|OFF id=16/20 off=0/65535 len=16 coff=16/393210 [seq]
         dec_stop_sending_frame frame.c:758 STOP_SENDING id=4 err=0xf9d7
         err_close conn.c:1170 ignoring new err 0x000a; existing err is 0x000a (unknown strm 4) 
19.604   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=4
         new_stream stream.c:103 serv conn 0:b6cade4590d7f7c7 strm 20 (bi, clnt) state strm_idle -> strm_open
         dec_stream_or_crypto_frame frame.c:292 serv conn 0:b6cade4590d7f7c7 strm 20 (bi, clnt) state strm_open -> strm_hcrm
         log_stream_or_crypto_frame frame.c:120 STREAM 0x0f=FIN|LEN|OFF id=20/44 off=0/65535 len=16 coff=32/393210 [seq]
         dec_stop_sending_frame frame.c:758 STOP_SENDING id=4 err=0x1113
         err_close conn.c:1170 ignoring new err 0x000a; existing err is 0x000a (unknown strm 4) 
20.138   log_pkt pkt.c:98 RX from=127.0.0.1:4987 len=2020 0xc9=Initial vers=0xff000011 dcid=b6cade4590d7f7c7 scid=0000000000000000 tok= len=1207 nr=0
         rx_pkts conn.c:1031 ignoring 2020-byte Initial pkt due to abandoned processing
20.301   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=16
         dec_stop_sending_frame frame.c:758 STOP_SENDING id=4 err=0x7a5e
         err_close conn.c:1170 ignoring new err 0x000a; existing err is 0x000a (unknown strm 4) 
21.261   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=18
         dec_stop_sending_frame frame.c:758 STOP_SENDING id=4 err=0x0cee
         err_close conn.c:1170 ignoring new err 0x000a; existing err is 0x000a (unknown strm 4) 
22.342   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1216 0x42=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=20
         err_close conn.c:1170 ignoring new err 0x0004; existing err is 0x000a (unknown strm 4) 
23.227   log_pkt pkt.c:107 RX from=127.0.0.1:4987 len=61 0xe0=Handshake vers=0xff000011 dcid=b6cade4590d7f7c7 scid=0000000000000000 len=53 nr=2
         dec_ack_frame frame.c:440 ACK 0x02= lg=3 delay=0 (0 usec) cnt=0 block=0 [3]
         on_pkt_acked recovery.c:402 3 was RTX'ed as 5
         detect_lost_pkts recovery.c:207 in_flight=1748 (+0), cwnd=12000 (+0), ssthresh=0 (+0), srtt=1.778 (+0.588), rttvar=1.623 (+1.028)
         dec_ack_frame frame.c:440 ACK 0x02= lg=4 delay=0 (0 usec) cnt=0 block=0 [4]
         dec_ack_frame frame.c:497 ECN verification failed for serv conn 0:b6cade4590d7f7c7
         detect_lost_pkts recovery.c:207 in_flight=496 (-1252), cwnd=13252 (+1252), ssthresh=0 (+0), srtt=2.242 (+0.465), rttvar=2.146 (+0.524)
         dec_ack_frame frame.c:440 ACK 0x02= lg=2 delay=0 (0 usec) cnt=0 block=0 [2]
         on_pkt_acked recovery.c:402 2 was RTX'ed as 4
         detect_lost_pkts recovery.c:207 in_flight=496 (+0), cwnd=13252 (+0), ssthresh=0 (+0), srtt=2.699 (+0.457), rttvar=2.523 (+0.377)
         dec_ack_frame frame.c:440 ACK 0x02= lg=6 delay=0 (0 usec) cnt=0 block=0 [6]
         dec_frames frame.c:957 PADDING len=15
         rx conn.c:1154 q_rx_ready(0, 0) done, exiting event loop
         q_rx_ready quic.c:730 serv conn 0:b6cade4590d7f7c7 ready to rx
         q_accept quic.c:441 serv conn 0:b6cade4590d7f7c7 accepted from clnt 127.0.0.1:4987, cipher AES256-GCM
         q_read quic.c:337 non-blocking read on serv conn 0:b6cade4590d7f7c7
         q_read quic.c:362 read 0 bytes on serv conn 0:b6cade4590d7f7c7 strm -1
         q_close quic.c:609 closing serv conn 0:b6cade4590d7f7c7 on port 4443
         q_close quic.c:617 serv conn 0:b6cade4590d7f7c7 state conn_clsg -> conn_qlse
         enter_closing conn.c:1258 serv conn 0:b6cade4590d7f7c7 state conn_qlse -> conn_clsg
23.228   log_pkt pkt.c:166 TX to=127.0.0.1:4987 0x40=Short kyph=0 spin=0 dcid=0000000000000000 nr=0
         enc_close_frame frame.c:1339 CONNECTION_CLOSE 0x1c=quic err=0x000a frame=0x05 rlen=15 reason=unknown strm 4
         on_pkt_sent recovery.c:295 in_flight=542 (+46), cwnd=13252 (+0), ssthresh=0 (+0), srtt=2.699 (+0.000), rttvar=2.523 (+0.000)
23.878   log_pkt pkt.c:107 RX from=127.0.0.1:4987 len=51 0xe0=Handshake vers=0xff000011 dcid=b6cade4590d7f7c7 scid=0000000000000000 len=43 nr=10
         dec_ack_frame frame.c:440 ACK 0x02= lg=5 delay=0 (0 usec) cnt=0 block=0 [5]
         detect_lost_pkts recovery.c:207 in_flight=265 (-277), cwnd=13529 (+277), ssthresh=0 (+0), srtt=3.130 (+0.431), rttvar=2.754 (+0.231)
         dec_ack_frame frame.c:440 ACK 0x02= lg=1 delay=0 (0 usec) cnt=0 block=0 [1]
         on_pkt_acked recovery.c:402 1 was RTX'ed as 5
         detect_lost_pkts recovery.c:207 in_flight=265 (+0), cwnd=13529 (+0), ssthresh=0 (+0), srtt=3.582 (+0.452), rttvar=2.970 (+0.216)
         dec_frames frame.c:957 PADDING len=15
24.313   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1216 0x40=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=22
         err_close conn.c:1170 ignoring new err 0x0004; existing err is 0x000a (unknown strm 4) 
24.526   enter_closed conn.c:1211 serv conn 0:b6cade4590d7f7c7 state conn_clsg -> conn_clsd
         enter_closed conn.c:1214 <any>(c, 0) done, exiting event loop
         free_stream stream.c:144 freeing strm 16 on serv conn 0:b6cade4590d7f7c7
         free_stream stream.c:144 freeing strm 20 on serv conn 0:b6cade4590d7f7c7
         q_rx_ready quic.c:722 waiting for conn to get ready to rx
24.864   rx_pkts conn.c:998 cannot find conn 0:b6cade4590d7f7c7 for 2020-byte Short pkt
24.864   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=2020 0x53=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1018 ignoring unexpected Short pkt for conn 0:b6cade4590d7f7c7
25.372   rx_pkts conn.c:938 new serv conn on port 4443 from 127.0.0.1:4987 w/cid=0:b6cade4590d7f7c7
         new_conn conn.c:1437 serv conn 0:b6cade4590d7f7c7 on port 4443 created
         new_conn conn.c:1439 serv conn 0:b6cade4590d7f7c7 state conn_clsd -> conn_idle
25.372   log_pkt pkt.c:98 RX from=127.0.0.1:4987 len=1232 0xc2=Initial vers=0xff000011 dcid=b6cade4590d7f7c7 scid=0000000000000000 tok= len=1207 nr=614407
         rx_pkts conn.c:1042 crypto fail on 1232-byte Initial pkt, ignoring
25.672   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1232 0x54=Short kyph=1 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
25.963   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1232 0x58=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
26.416   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1232 0x41=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
26.734   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4988, probing
26.734   log_pkt pkt.c:116 RX from=127.0.0.1:4988 len=1232 0x5f=Short kyph=1 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
27.201   log_pkt pkt.c:116 RX from=127.0.0.1:4988 len=1232 0x52=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
27.537   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4987, probing
27.537   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1232 0x45=Short kyph=1 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
28.154   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4988, probing
28.154   log_pkt pkt.c:116 RX from=127.0.0.1:4988 len=1232 0x50=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
28.545   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4987, probing
28.545   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1232 0x54=Short kyph=1 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
28.914   log_pkt pkt.c:116 RX from=127.0.0.1:4987 len=1232 0x5b=Short kyph=0 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
29.325   rx_pkts conn.c:987 pkt came from new peer 127.0.0.1:4988, probing
29.325   log_pkt pkt.c:116 RX from=127.0.0.1:4988 len=1232 0x54=Short kyph=1 spin=0 dcid=b6cade4590d7f7c7 nr=0
         rx_pkts conn.c:1042 rx invalid 1232-byte Short pkt, ignoring
35.373   idle_alarm conn.c:1269 idle timeout on serv conn 0:b6cade4590d7f7c7
         idle_alarm conn.c:1271 serv conn 0:b6cade4590d7f7c7 state conn_idle -> conn_drng
         enter_closing conn.c:1252 closing/draining alarm in 0.300000 sec on serv conn 0:b6cade4590d7f7c7
35.673   enter_closed conn.c:1211 serv conn 0:b6cade4590d7f7c7 state conn_drng -> conn_clsd


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.