> Am 26.04.2020 um 17:26 schrieb Yann Ylavic <[email protected]>: > > After a look at our codebase, this would work as is, all of the FILE > buckets we pass through output filters are from r->pool, so the > lifetime is within the EOR scope (I'm not totally sure about the http2 > beam case, Stefan?).
Lacking a name to describe the pool situtation in mod_http2, yet, let's use "crossing conntections" for now. The "main" connection (to the h2 client) and the one processing the h2 streams (requests) are side-by-side, living mostly in separate threads even. Buckets in request brigades need to "cross" these connections. In my delusion of having understood all about pools, threads and filters, I made h2_bucket_beam for the purpose of avoiding copying bucket data, especially files, across connections. And for files, it needs to apr_file_setaside() into the other connection. Which, I guess, only works for non-split file buckets. But I am no longer certain. In an alternate universe, were I to do it again, I would not place HTTP/2 into the httpd process itself. Not only because it is tricky, but it also affects further optimizations of the HTTP/1.x case more difficult. As to be seen from this discussion. - Stefan
