For 2.1, I'd like to change the way in which request pools
are destroyed.  Currently, it's possible for a request to be
destroyed before the entire response is set.

My proposed changes are:
 - Create each top-level request pool as a free-standing pool,
   rather than a subpool of the connection pool.
 - After generating the response, don't destroy the request pool.
   Instead, create a metadata bucket that points to the request_rec
   and send this bucket through the output filter chain.
 - In the core_output_filter, once everything before this metadata
   bucket is sent, run the logger and then destroy the request pool.

Motivation:
 - Facilitate the development of event-based MPMs in which worker
   threads hand off a request to I/O completion threads.
 - Reduce the need for bucket setaside in the output filters,
   which has been a source of many errors in 2.0.
 - Improve the accuracy of I/O measurements (like mod_logio) by
   delaying the logging until after the request is actually sent.

Comments welcome...

Thanks,
Brian


Reply via email to