> > what is wrong with DONE?  DONE immediatly closes the client 
> connection
> > and starts the logging phase.  if you have sent the content already
> > then there is nothing to worry about.  the call to send_http_header
> > will pick up on the any status you set previously or use the default
> > HTTP_OK set at the start of the request.
> 
> Isn't DONE ignored like OK and DECLINED? "Writing Apache Modules
> w. P.a.C." says:
> 
> "..Each handler will be called in turn in the order in which it was
> declared. The exception to this rule is if one of the handlers in the
> series returns an error code (anything other than OK, DECLINED, or
> DONE)..."

ok, I think that paragraph can be read a few ways.

pretty much anything other than OK, DECLINED, or DONE is treated as an error
and starts the error processing cycle.  even things like REDIRECT.  that's
what I think the parenthetical was talking about.  now, that aside, DONE has
special meaning to Apache, namely ending the request and moving to the
logging phase.  Looks like I was wrong about it closing the connection,
though - I thought I had both read and tested that, but I can't see in the
code where Apache overrides the current keepalive settings and in my tests
the connection was left open.

the current implementation in perl_call_handler has exceptions for != OK,
then further processing for SERVER_ERROR and DECLINED.  DONE appears to fall
through, which would appear to make it behave the way I described.

however, the real proof is in testing, which for me shows exactly what I
expected - DONE terminates the chain and returns 200.  try it yourself :)

--Geoff


Reply via email to