Try this:
apr_status_t my_out_filter(ap_filter_t *f, apr_bucket_brigade *bb)
{
....
if (I_should_return_503)
{
ap_remove_output_filter(f);
f->r->status = HTTP_SERVICE_UNAVAILABLE;
return HTTP_OK;
}
....
}
On Tue, Dec 9, 2008 at 4:25 PM, John Zhang <[EMAIL PROTECTED]> wrote:
> When I encounter certain error conditions in my output filter, I would like
> to return a specific error code/page (eg 503 - service not available).
> However, the following code results in a 500 beeing returned to the
> browser:
>
> apr_status_t my_out_filter(ap_filter_t *f, apr_bucket_brigade *bb)
> {
> ....
> if (I_should_return_503)
> {
> ap_remove_output_filter(f);
> // f->r->status = HTTP_SERVICE_UNAVAILABLE;
> return HTTP_SERVICE_UNAVAILABLE;
> }
> ....
> }
>
> In fact, no matter what error code I return, the browser always gets a 500
> error. Also, if I uncomment the "f->r->..." line, the browser gets an empty
> (200) page.
>
> Any suggestions?
>
> Thanks in advance,
> John
>
>