On 22 Jun 2015, at 2:48 PM, Stefan Eissing <stefan.eiss...@greenbytes.de> wrote:
> Eric, thanks for the help! When enabling mod_logio it became immediately > clear that mod_h2 wrongly prevented some pre_connection hooks to run. > mod_logio however expects its allocated module config to be there when a > request gets cleaned up... So, with v0.7.2 all pre_conn hooks are run again > and it is part of my test setup now. > > Which adds the issue about proper handling of module configurations in pseudo > connections. There seem to be two approaches: > a) treat pseudo connections like real ones -> run all connection hooks > b) treat them as "shadows" of the real connection -> copy module configs > > While a) is the least dangerous, it misses gives a false impression about the > properties of a connection. For example, mod_h2 currently copies over the > mod_ssl config, so that SSL variables are available during request processing > on pseudo connections. On the other hand, code is not really prepared for b) > since this means that many threads may operate on the same module config. > > So, mod_h2 now follow a) for now (with the exception of mod_ssl). A future > proposal for pseudo connections will need to reevaluate this. I would argue that the copying option above is most dangerous, as this has side effects that may not be catered for by pool cleanups. I believe we should be treating the “pseudo” connections as real connections, and perhaps by linking a “subconnection” to a “connection” (c->main) in the same way we currently link a subrequest to a request (r->main). If you run into any blockers while doing this I would argue those blockers would be bugs and we want to fix them. Regards, Graham —