First of all let's clear up the 1.0 side:
Quoting the eagle book:
The exception to this rule [all handlers will run] is if one of
the handlers in the series returns an error code (anything other than
OK, DECLINED, or DONE)
Though the code does *not* check for DONE:
mod_perl.c:1375
if((status != OK) && (status != DECLINED)) {
...
return status;
}
so where is the bug? In the book or the code?
well, OK, DECLINED, and DONE are all success codes - everything else
is an error and goes to the error document cycle.
however, DONE is special - it indicates that all content has been sent
and the request cycle should proceed straight to the logging phase.
from a handler perspective, DONE behaves the same as an error code -
it terminates the request cycle.
I suspect that 1.0 logic handled DONE automatically - DONE was
captured and passed back to Apache, which took appropriate action.
and I suspect this is what you found in 2.0, since you test for DONE
but didn't handle it explicitly.
kudos, stas, for always taking care of all the 2.0 stuff.
--Geoff