@@ -767,7 +767,8 @@ blocked_ka_alarm_expired (enum alarm_id al_id, void *ctx,
767
767
el = lsquic_hash_next (conn -> ifc_pub .all_streams ))
768
768
{
769
769
stream = lsquic_hashelem_getdata (el );
770
- if (lsquic_stream_is_blocked (stream ))
770
+ if (lsquic_stream_is_blocked (stream )
771
+ && !lsquic_stream_is_write_reset (stream ))
771
772
{
772
773
if (!(stream -> sm_qflags & SMQF_SENDING_FLAGS ))
773
774
TAILQ_INSERT_TAIL (& conn -> ifc_pub .sending_streams , stream ,
@@ -2820,7 +2821,18 @@ process_stream_ready_to_send (struct ietf_full_conn *conn,
2820
2821
if (stream -> sm_qflags & SMQF_SEND_MAX_STREAM_DATA )
2821
2822
r &= generate_max_stream_data_frame (conn , stream );
2822
2823
if (stream -> sm_qflags & SMQF_SEND_BLOCKED )
2823
- r &= lsquic_sendctl_gen_stream_blocked_frame (& conn -> ifc_send_ctl , stream );
2824
+ {
2825
+ if (lsquic_stream_is_write_reset (stream ))
2826
+ {
2827
+ stream -> sm_qflags &= ~SMQF_SEND_BLOCKED ;
2828
+ if (!(stream -> sm_qflags & SMQF_SENDING_FLAGS ))
2829
+ TAILQ_REMOVE (& stream -> conn_pub -> sending_streams , stream ,
2830
+ next_send_stream );
2831
+ }
2832
+ else
2833
+ r &= lsquic_sendctl_gen_stream_blocked_frame (& conn -> ifc_send_ctl ,
2834
+ stream );
2835
+ }
2824
2836
if (stream -> sm_qflags & SMQF_SEND_RST )
2825
2837
r &= generate_rst_stream_frame (conn , stream );
2826
2838
if (stream -> sm_qflags & SMQF_SEND_STOP_SENDING )
0 commit comments