On the backend side, a QCS may be opened but resetted immediately. No
STREAM frame will be emitted prior to the RESET_STREAM. When the latter
is sent, qcs_close_local() will mark the QCS Tx channel as closed.
In this case, a BUG_ON() would be triggered as there is QCS Tx channel
is not yet marked as opened. To prevent this, add a qcs_idle_open() call
when the stream is resetted, but only for the backend side.
This should be backported up to 3.3.
qcs->flags |= QC_SF_TO_RESET;
qcs->err = err;
+ /* On BE side, a QCS may be resetted before any data emission. */
+ if (conn_is_back(qcs->qcc->conn))
+ qcs_idle_open(qcs);
+
if (diff) {
const int soft_blocked = qfctl_sblocked(&qcc->tx.fc);