In h2_detach(), it looks possible to place a dead connection back to
the idle list, and to later call h2_release() on it once detected as
dead. It's not certain that it happens but nothing in the code shows
it is not possible, so better make sure it cannot happen.
This should be preventively backported to all versions.
h2s_destroy(h2s);
- if (h2c->flags & H2_CF_IS_BACK) {
+ if (h2c->flags & H2_CF_IS_BACK && !h2c_is_dead(h2c)) {
if (!(h2c->flags & (H2_CF_RCVD_SHUT|H2_CF_ERR_PENDING|H2_CF_ERROR))) {
/* Ensure idle-ping is activated before going to idle. */
if (eb_is_empty(&h2c->streams_by_id) &&