diff --git a/src/liblsquic/lsquic_full_conn.c b/src/liblsquic/lsquic_full_conn.c index 81632dd..4ec7027 100644 --- a/src/liblsquic/lsquic_full_conn.c +++ b/src/liblsquic/lsquic_full_conn.c @@ -3411,6 +3411,8 @@ full_conn_ci_tick (lsquic_conn_t *lconn, lsquic_time_t now) ++conn->fc_stats.n_ticks; #endif + CLOSE_IF_NECESSARY(); + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) && conn->fc_mem_logged_last + 1000000 <= now) { diff --git a/src/liblsquic/lsquic_full_conn_ietf.c b/src/liblsquic/lsquic_full_conn_ietf.c index c8c9575..2910a62 100644 --- a/src/liblsquic/lsquic_full_conn_ietf.c +++ b/src/liblsquic/lsquic_full_conn_ietf.c @@ -1886,7 +1886,7 @@ generate_ack_frame_for_pns (struct ietf_full_conn *conn, &conn->ifc_rechist[pns], now, &has_missing, &packet_out->po_ack2ed, ecn_counts); if (w < 0) { - ABORT_ERROR("generating ACK frame failed: %d", errno); + ABORT_ERROR("%s generating ACK frame failed: %d", lsquic_pns2str[pns], errno); return -1; } CONN_STATS(out.acks, 1); @@ -8201,6 +8201,8 @@ ietf_full_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now) CONN_STATS(n_ticks, 1); + CLOSE_IF_NECESSARY(); + if (conn->ifc_flags & IFC_HAVE_SAVED_ACK) { (void) /* If there is an error, we'll fail shortly */ diff --git a/src/liblsquic/lsquic_send_ctl.c b/src/liblsquic/lsquic_send_ctl.c index 70a291e..7d2861d 100644 --- a/src/liblsquic/lsquic_send_ctl.c +++ b/src/liblsquic/lsquic_send_ctl.c @@ -3424,6 +3424,8 @@ lsquic_send_ctl_empty_pns (struct lsquic_send_ctl *ctl, enum packnum_space pns) lsquic_alarmset_unset(ctl->sc_alset, AL_RETX_INIT + pns); + ctl->sc_flags &= ~(SC_LOST_ACK_INIT << pns); + LSQ_DEBUG("emptied %s, destroyed %u packet%.*s", lsquic_pns2str[pns], count, count != 1, "s"); }