well, OK, DECLINED, and DONE are all success codes - everything else is an error and goes to the error document cycle.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?
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