Properly fix BUG_ON() occurence when QUIC MUX emits only empty STREAM
frames. This was addressed by a previous patch but it causes another
regression so a revert was needed.
BUG_ON() on qcc_build_frms() return value is invalid. Indeed,
qcc_build_frms() may return 0, but this does not imply that frame list
is empty, as encoded frames can have a zero length payload. As such,
simply remove this invalid BUG_ON().
This must be backported up to 3.1.
(cherry picked from commit
ddfd8031f895b448604cbc259f74e6cb7b086b0b)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
* error occured during this step, this is considered as fatal. Tx frms is
* cleared and 0 is returned.
*
- * Returns the sum of encoded STREAM frames length or 0 if no frame built.
+ * Returns the sum of encoded payload STREAM frames length. Note that 0 can be
+ * returned either if no frame was built or only empty payload frames were
+ * encoded.
*/
static int qcc_build_frms(struct qcc *qcc, struct list *qcs_failed)
{
/* Encode new STREAM frames if list has been previously cleared. */
if (LIST_ISEMPTY(frms) && !LIST_ISEMPTY(&qcc->send_list)) {
total = qcc_build_frms(qcc, &qcs_failed);
- if (!total) {
- BUG_ON(!LIST_ISEMPTY(frms));
+ if (LIST_ISEMPTY(frms))
goto out;
- }
}
if (qcc_is_pacing_active(qcc->conn)) {