I'm getting closer - Remy or Kin-Man, I need your help.
As I expected, the flush() was hiding some other behaviors.

Right now I'm looking at ApplicationDispatcher.doForward().

What happens is:
 - error happens
 - we forward to the error page
 - error page executes, put the data in the out buffer
 - BEFORE: the out buffer was commited
 - now we just return from servlet to doForward()
 - The "commiting and closing response" reached ( line 471 )
 What happens here is response is a ResponseFacade, and finish
is called. But the real flushing and closing doesn't actually 
happens.

I changed the code to first flush/close, the call finish - and
it now seems to work fine.

But I'm not sure what else may be affected by this - or if 
it's safe to make the change ( well, for 5.0 it may be, but what
about 4.1 ? )

In any case, I expect this to have caused some weird behavior 
for normal forward - since forward doesn't seem to really flush/close
as it was supposed to do ( unless response is not facade - does
this case ever happen ? ). A bit strange no other test detected that,
normal servlets don't have flush/close that the jsp page had.


Costin



Costin Manolache wrote:

> I get more info on the issue. The error page worked before
> because the forward() that was used to redirect to the
> error page did commit the buffer.
> 
> Right now the control returns to the page with error, where
> the buffer seems to be overriden.
> 
> I'm still debugging it - if I can't find any simple fix I'll
> just roll back in the 4.1 tree, and continue to try for 5.0
> 
> Costin




--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>

Reply via email to