no tests currently, but there's a module on cpan that uses it.
http://search.cpan.org/~DORIAN/Apache-TrapSubRequest-0.01/
diff -ur mod_perl-2.0.0-RC4/lib/Apache/ParseSource.pm mod_perl-2.0.0-RC4-djt/lib/Apache/ParseSource.pm --- mod_perl-2.0.0-RC4/lib/Apache/ParseSource.pm Fri Jan 7 01:17:50 2005 +++ mod_perl-2.0.0-RC4-djt/lib/Apache/ParseSource.pm Fri Feb 11 08:22:37 2005 @@ -138,7 +138,7 @@ apr_optional mod_include mod_cgi mod_proxy mod_ssl ssl_ apr_anylock apr_rmm ap_config mod_log_config - mod_perl modperl_ apreq); + mod_perl modperl_ apreq mod_transform mod_.*svn); $unwanted = qr|^$unwanted|; my $wanted = ''; diff -ur mod_perl-2.0.0-RC4/xs/Apache/Filter/Apache__Filter.h mod_perl-2.0.0-RC4-djt/xs/Apache/Filter/Apache__Filter.h --- mod_perl-2.0.0-RC4/xs/Apache/Filter/Apache__Filter.h Fri Jan 7 01:17:40 2005 +++ mod_perl-2.0.0-RC4-djt/xs/Apache/Filter/Apache__Filter.h Thu Feb 10 20:33:58 2005 @@ -365,3 +365,20 @@ return rc; } + +static MP_INLINE +apr_status_t mpxs_Apache__Filter_save_brigade(pTHX_ ap_filter_t *f, + apr_bucket_brigade *saveto, + apr_bucket_brigade *bb, + apr_pool_t *p) +{ + apr_status_t rc = ap_save_brigade(f, &saveto, &bb, p); + /* if users don't bother to check the success, do it on their + * behalf */ + if (GIMME_V == G_VOID && rc != APR_SUCCESS) { + modperl_croak(aTHX_ rc, "Apache::Filter::save_brigade"); + } + + return rc; +} + diff -ur mod_perl-2.0.0-RC4/xs/maps/apache_functions.map mod_perl-2.0.0-RC4-djt/xs/maps/apache_functions.map --- mod_perl-2.0.0-RC4/xs/maps/apache_functions.map Fri Jan 7 01:17:39 2005 +++ mod_perl-2.0.0-RC4-djt/xs/maps/apache_functions.map Thu Feb 10 22:59:18 2005 @@ -245,7 +245,9 @@ !ap_register_output_filter -ap_remove_output_filter -ap_remove_input_filter -!ap_save_brigade +~ap_save_brigade + mpxs_Apache__Filter_save_brigade | | \ + f, saveto, bb, p=(f->r ? f->r->pool : NULL) | save_brigade ap_filter_flush ~ap_fflush mpxs_Apache__Filter_fflush