Previously, qc_do_build_pkt() had a special case when an empty packet
was generated. In this case, a PADDING frame was inserted. This specific
block was removed as padding support was centralized by the previous
patch.
However, such empty packets have no real purpose, and also are non
efficient. Add a BUG_ON() to ensure that caller never invoke
qc_do_build_pkt() if there is no data to emit.
qc_do_build_pkt() is a tedious function which already had some issues.
As such, this change is labelled as MEDIUM, as it is not 100% sure that
empty packet case is never encountered during emission.
dglen += 1;
}
+ /* Caller must not try to build an empty packet. */
+ BUG_ON(LIST_ISEMPTY(&frm_list) && !add_ping_frm && !ack_frm_len && !cc);
+
/* Handle Initial packet padding if necessary. */
if (padding && dglen < QUIC_INITIAL_PACKET_MINLEN) {
padding_len = QUIC_INITIAL_PACKET_MINLEN - dglen;