Only force TICK_CLOSE flag when CONNECTION_CLOSE frame received.

This commit is contained in:
George Wang 2021-06-11 22:18:01 -04:00
parent d1628a5677
commit 47440e4eaf
2 changed files with 10 additions and 4 deletions

View file

@ -3597,6 +3597,7 @@ full_conn_ci_tick (lsquic_conn_t *lconn, lsquic_time_t now)
* packets scheduled to send, or silent close flag is not set. * packets scheduled to send, or silent close flag is not set.
*/ */
conn->fc_flags |= FC_TICK_CLOSE; conn->fc_flags |= FC_TICK_CLOSE;
if (conn->fc_flags & FC_RECV_CLOSE)
tick |= TICK_CLOSE; tick |= TICK_CLOSE;
if ((conn->fc_flags & FC_RECV_CLOSE) || if ((conn->fc_flags & FC_RECV_CLOSE) ||
0 != lsquic_send_ctl_n_scheduled(&conn->fc_send_ctl) || 0 != lsquic_send_ctl_n_scheduled(&conn->fc_send_ctl) ||
@ -3604,8 +3605,10 @@ full_conn_ci_tick (lsquic_conn_t *lconn, lsquic_time_t now)
{ {
RETURN_IF_OUT_OF_PACKETS(); RETURN_IF_OUT_OF_PACKETS();
generate_connection_close_packet(conn); generate_connection_close_packet(conn);
tick |= TICK_SEND; tick |= TICK_SEND|TICK_CLOSE;
} }
else
tick |= TICK_CLOSE;
goto end; goto end;
} }

View file

@ -8354,6 +8354,7 @@ ietf_full_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now)
{ {
LSQ_DEBUG("connection is OK to close"); LSQ_DEBUG("connection is OK to close");
conn->ifc_flags |= IFC_TICK_CLOSE; conn->ifc_flags |= IFC_TICK_CLOSE;
if (conn->ifc_flags & IFC_RECV_CLOSE)
tick |= TICK_CLOSE; tick |= TICK_CLOSE;
if (!(conn->ifc_mflags & MF_CONN_CLOSE_PACK) if (!(conn->ifc_mflags & MF_CONN_CLOSE_PACK)
/* Generate CONNECTION_CLOSE frame if: /* Generate CONNECTION_CLOSE frame if:
@ -8379,8 +8380,10 @@ ietf_full_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now)
{ {
RETURN_IF_OUT_OF_PACKETS(); RETURN_IF_OUT_OF_PACKETS();
generate_connection_close_packet(conn); generate_connection_close_packet(conn);
tick |= TICK_SEND; tick |= TICK_SEND|TICK_CLOSE;
} }
else
tick |= TICK_CLOSE;
goto end; goto end;
} }