diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c index 9ba2984b2c96aa56281ff216346d027715b5fc2b..ff8c608b776dac873fa4e187ed83d383929b70b8 100644 --- a/lib/ngtcp2_conn.c +++ b/lib/ngtcp2_conn.c @@ -595,6 +595,12 @@ static void conn_update_recv_rate(ngtcp2_conn *conn, size_t datalen, window = conn->cstat.min_rtt == UINT64_MAX ? conn->cstat.initial_rtt : conn->cstat.min_rtt * 2; + /* If settings.initial_rtt is zero for whatever reason then window + can be zero and we can end up with a division by zero error when + bps is set below. If this assert fails, check that + settings.initial_rtt is not zero. */ + assert(window); + if (window > ts - conn->rx.rate.start_ts) { return; }