Am Dienstag, den 02.01.2007, 13:29 -0800 schrieb Drew Bertola:
> > for ( e = APR_BRIGADE_FIRST(bb) ;
> > e != APR_BRIGADE_SENTINEL(bb) ;
> > e = APR_BUCKET_NEXT(e) ) {
> - create context if it doesn't already exist.
> - loop through buckets (from FIRST to SENTINEL) in brigade passed to
> filter appending each bucket to my context's brigade.
The moment you append e the value of APR_BUCKET_NEXT(e) changes to your
context brigades sentinel.
> - pass my brigade to next filter.
>
> So, shouldn't this work? ...
> - do I need to look out for APR_BUCKET_IS_EOS or APR_BUCKET_IS_FLUSH or
> are they implicit before APR_BRIGADE_IS_SENTINEL?
Yes and no. You can have multiple brigades and only the last one holds
_the_ EOS bucket.
> - do I need to use ap_pass_brigade()? I've used it here before returning.
That depends, but usually you will use it. ap_pass_brigade is misnomed.
It passes the buckets held by the parameter brigade to the next filters
brigade. Alternatively you probably could append to the next filters
brigade.
See also
http://www.heute-morgen.de/modules/doc/well_behaved_filters.html
Sincerely,
Joachim
|