diff --git a/docs/manual/developer/output-filters.html.en b/docs/manual/developer/output-filters.html.en index 6c60c1ad4f..1aca7f2957 100644 --- a/docs/manual/developer/output-filters.html.en +++ b/docs/manual/developer/output-filters.html.en @@ -120,8 +120,11 @@ ignored.

An output filter should never pass an empty brigade down the - filter chain. But, for good defensive programming, filters should - be prepared to accept an empty brigade, and do nothing.

+ filter chain. To be defensive, filters should be prepared to + accept an empty brigade, and should return success without passing + this brigade on down the filter chain. The handling of an empty + brigade should have no side effects (such as changing any state + private to the filter).

How to handle an empty brigade

apr_status_t dummy_filter(ap_filter_t *f, apr_bucket_brigade *bb)
diff --git a/docs/manual/developer/output-filters.xml b/docs/manual/developer/output-filters.xml index 046ef99022..5d813ef299 100644 --- a/docs/manual/developer/output-filters.xml +++ b/docs/manual/developer/output-filters.xml @@ -114,8 +114,11 @@ ignored.

An output filter should never pass an empty brigade down the - filter chain. But, for good defensive programming, filters should - be prepared to accept an empty brigade, and do nothing.

+ filter chain. To be defensive, filters should be prepared to + accept an empty brigade, and should return success without passing + this brigade on down the filter chain. The handling of an empty + brigade should have no side effects (such as changing any state + private to the filter).

How to handle an empty brigade apr_status_t dummy_filter(ap_filter_t *f, apr_bucket_brigade *bb)