On Thu, Jan 19, 2017 at 10:58 PM, Yann Ylavic <ylavic....@gmail.com> wrote: > On Thu, Jan 19, 2017 at 10:41 PM, Stefan Eissing > <stefan.eiss...@greenbytes.de> wrote: >> >> Would work. But then we could just never destroy this directly, >> because it will always disappear via the parent h2_session pool? > > Yes, we only need to cleanups things (or take actions) that are not > cleaned implicitely by the pool itself.
Actually for the h2_session_cleanup() case, it seems that releasing (and joining) the mplx should happen before anything else in (or after) the cleanup, so you may not want to put h2_mplx_release_and_join() in an mplx->pool cleanup that'd execute after. But if that's not an issue, you could do that and simply session->mplx=NULL in the session cleanup. If that's an issue, you could also register h2_session_cleanup as a "normal" (i.e. not "pre_") cleanup, so that it exectutes after all subpools are destroyed... I just proposed the minimal patch...