> +static APR_INLINE int is_in_memory_bucket(apr_bucket *b)
> +{
> + /* The bucket data are already in memory unless:
> + * - it's a morphing bucket (heap buffers allocated on read), or
> + * - it's a file bucket (heap buffers also allocated on read), or
> + * - it's a mmap bucket (mapping happens over memory access usually).
> + */
> + return b->length != (apr_size_t)-1
> + && !APR_BUCKET_IS_FILE(b)
> + && !APR_BUCKET_IS_MMAP(b);
> +}
Is this blacklist style safe? Could out-of-tree bucket types act close
to file/mmap buckets?