This is pretty cool... haven't played too much with it, but via inspection I like the implementation.
One question: =================================================================== --- server/util_filter.c (revision 1622873) +++ server/util_filter.c (working copy) @@ -566,6 +566,16 @@ { if (next) { apr_bucket *e; + unsigned int activity; + int empty = APR_BRIGADE_EMPTY(bb); + apr_status_t status; ... + while (APR_SUCCESS == status && empty) { + next = next->next; + if (next && next->c->activity == activity) { + status = next->frec->filter_func.out_func(next, bb); + } + else { + break; + } + } + + return status; Why does while check for empty? Wouldn't it be faster to wrap that while in a 'if (empty)' ? It would safe an addition check on a var that doesn't change on each loop thru the while().