|const char *||base|
The pool bucket must be able to be easily morphed to a heap bucket if the pool gets cleaned up before all references are destroyed. This apr_bucket_heap structure is populated automatically when the pool gets cleaned up, and subsequent calls to pool_read() will result in the apr_bucket in question being morphed into a regular heap bucket. (To avoid having to do many extra refcount manipulations and b->data manipulations, the apr_bucket_pool struct actually *contains* the apr_bucket_heap struct that it will become as its first element; the two share their apr_bucket_refcount members.)
|const char* apr_bucket_pool::base|
The block of data actually allocated from the pool. Segments of this block are referenced by adjusting the start and length of the apr_bucket accordingly. This will be NULL after the pool gets cleaned up.
The pool the data was allocated from. When the pool is cleaned up, this gets set to NULL as an indicator to pool_read() that the data is now on the heap and so it should morph the bucket into a regular heap bucket before continuing.
The freelist this structure was allocated from, which is needed in the cleanup phase in order to allocate space on the heap