I was playing with mod_dialup, and for some reason ended up using mod_rewrite with it and it broke.
The problem is when an asynch handler returns SUSPENDED from an internal redirect: * ap_internal_redirect() doesn't know to to skip ap_die() * ap_internal_redirect() returns void, so the "original" handler who did the internal redirect can't know to also return suspended. I fixed the former, and for the latter I put a kludge into ap_internal_redirect() and mod_rewrite's handler_redirect to pass a hint via r->notes and it got mod_dialup working. (Without the second bit, an EOR bucket ends up getting created and passed from the original handler returning DONE -- between post-suspend callbacks to mod_dialup!) Could ap_internal_redirect return a status to accomodate this? Some return codes would be ambiguous because ap_internal_redirect calls more than the handler, but checking for SUSPENDED specifically to propagate it back would be pretty clear. Or should this be passed back somewhere in the original request_rec that callers have to check? -- Eric Covener [email protected]
