Skip to content

Commit

Permalink
quic: fix ping flag bug
Browse files Browse the repository at this point in the history
  • Loading branch information
riptl authored and ripatel-fd committed Oct 20, 2024
1 parent 98a2225 commit 8f8f244
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 16 deletions.
24 changes: 9 additions & 15 deletions src/waltz/quic/fd_quic.c
Original file line number Diff line number Diff line change
Expand Up @@ -3722,21 +3722,20 @@ fd_quic_gen_max_streams_frame( fd_quic_conn_t * conn,
}

static ulong
fd_quic_gen_ping_frame( fd_quic_conn_t * conn,
uchar * payload_ptr,
uchar * payload_end,
fd_quic_pkt_meta_t * pkt_meta,
ulong pkt_number,
ulong now ) {
fd_quic_gen_ping_frame( fd_quic_conn_t * conn,
uchar * payload_ptr,
uchar * payload_end,
ulong pkt_number ) {

if( ~conn->flags & FD_QUIC_CONN_FLAGS_PING ) return 0UL;
if( conn->flags & FD_QUIC_CONN_FLAGS_PING_SENT ) return 0UL;

fd_quic_ping_frame_t ping = {0};
ulong frame_sz = fd_quic_encode_ping_frame( payload_ptr,
(ulong)( payload_end - payload_ptr ),
&ping );
if( FD_UNLIKELY( frame_sz==FD_QUIC_ENCODE_FAIL ) ) return 0UL;

pkt_meta->flags |= FD_QUIC_PKT_META_FLAGS_PING;
pkt_meta->expiry = fd_ulong_min( pkt_meta->expiry, now + 3u * conn->rtt );
conn->flags |= FD_QUIC_CONN_FLAGS_PING_SENT;

conn->upd_pkt_number = pkt_number;
return frame_sz;
Expand Down Expand Up @@ -3896,7 +3895,7 @@ fd_quic_gen_frames( fd_quic_conn_t * conn,
if( conn->upd_pkt_number >= pkt_number ) {
payload_ptr += fd_quic_gen_max_data_frame ( conn, payload_ptr, payload_end, pkt_meta, pkt_number, now );
payload_ptr += fd_quic_gen_max_streams_frame( conn, payload_ptr, payload_end, pkt_meta, pkt_number, now );
payload_ptr += fd_quic_gen_ping_frame ( conn, payload_ptr, payload_end, pkt_meta, pkt_number, now );
payload_ptr += fd_quic_gen_ping_frame ( conn, payload_ptr, payload_end, pkt_number );
}
if( FD_LIKELY( conn->hs_data_empty ) ) {
payload_ptr = fd_quic_gen_stream_frames( conn, payload_ptr, payload_end, pkt_meta, pkt_number, now );
Expand Down Expand Up @@ -5139,11 +5138,6 @@ fd_quic_pkt_meta_retry( fd_quic_t * quic,
conn->upd_pkt_number = FD_QUIC_PKT_NUM_PENDING;
}
}
if( flags & FD_QUIC_PKT_META_FLAGS_PING ) {
/* set max_data to be sent only if unacked */
conn->flags |= FD_QUIC_CONN_FLAGS_PING_SENT;
conn->upd_pkt_number = FD_QUIC_PKT_NUM_PENDING;
}
if( flags & FD_QUIC_PKT_META_FLAGS_MAX_STREAMS_UNIDIR ) {
/* do we still need to send? */
/* get required value */
Expand Down
1 change: 0 additions & 1 deletion src/waltz/quic/fd_quic_pkt_meta.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ struct fd_quic_pkt_meta {
# define FD_QUIC_PKT_META_FLAGS_CLOSE (1u<<8u)
# define FD_QUIC_PKT_META_FLAGS_KEY_UPDATE (1u<<9u)
# define FD_QUIC_PKT_META_FLAGS_KEY_PHASE (1u<<10u)
# define FD_QUIC_PKT_META_FLAGS_PING (1u<<11u)
fd_quic_range_t range; /* range of bytes referred to by this meta */
/* stream data or crypto data */
/* we currently do not put both in the same packet */
Expand Down

0 comments on commit 8f8f244

Please sign in to comment.