[ 
https://issues.apache.org/jira/browse/FELIX-5053?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Carsten Ziegeler reopened FELIX-5053:
-------------------------------------

Three tests in the itest module fail now, all of them in
RequestDispatchTest.

These tests call a servlet which:
- writes to the writer
- forwards to another servlet
- writes to the writer again.


With http.base 3.0.0 the write after the forward is simply ignored, with
http.base 3.0.1-SNAPSHOT it is not and ends up in the output stream.
Looking at the servlet spec, that seems to be wrong. However I'm not
sure whether the writing should be ignored or actually throw an exception.
I seems we were wrong that the close is
not needed 

> IllegalArgumentException when forwarding request
> ------------------------------------------------
>
>                 Key: FELIX-5053
>                 URL: https://issues.apache.org/jira/browse/FELIX-5053
>             Project: Felix
>          Issue Type: Bug
>          Components: HTTP Service
>    Affects Versions: http.base-3.0.0
>            Reporter: Sten Roger Sandvik
>            Assignee: Sten Roger Sandvik
>             Fix For: http.base-3.0.2
>
>
> It seems to be a problem with forwarding requests in certain cases. I have 
> the following setup:
> * Servlet A forwards the request to Servlet 2 (using RequestDispatcher).
> * Servlet B writes to the response using an output stream 
> (HttpServletResponse.getOutputStream()).
> When this happens I get an IllegalStateException from Jetty that basically 
> saying that the Writer cannot be closed since I have already used an 
> OutputStream.
> The code that I think is wrong (or possibly not robust enough) is in 
> RequestDispatcherImp line 84. 
> {code}
> if (!request.isAsyncStarted())
> {
>   response.flushBuffer();
>   response.getWriter().close();
> }
> {code}
> The line that causes trouble is:
> {code}
> response.getWriter().close();
> {code}
> We should probably check if we can actually close this writer or just ignore 
> the potential exception.
> In my setup I have one servlet that writes to OutputStream using 
> HttpServletResponse.getOutputStream(). Then I have another servlet that 
> forwards the request to the first servlet. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to