You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Roger Nesbitt <ro...@ecosm.com> on 2002/02/06 04:32:28 UTC
patch: fix warp connector to properly implement flush() and flushBuffer()
Hi all,
I've got a little servlet that keeps the HTTP connection streams data (html
script data, to be precise) at the rate of a few bytes per second. Tomcat
handled this fine, but as soon as I routed it through Apache using the warp
connector, I found that data was not sent until the connection was closed
(never, in the case of my servlet.)
Traced the problem down to WarpResponse.java: for some reason it was
inheriting its stream from OutputStream instead of ServletOutputStream,
which was causing all sorts of problems. Also made sure it flushed the
headers before trying to write body data.
Seems to be going fine now, but this is my first patch so treat with
caution!
--
Roger Nesbitt
Re: patch: fix warp connector to properly implement flush() and
flushBuffer()
Posted by jean-frederic clere <jf...@fujitsu-siemens.com>.
Roger Nesbitt wrote:
>
> Hi all,
>
> I've got a little servlet that keeps the HTTP connection streams data (html
> script data, to be precise) at the rate of a few bytes per second. Tomcat
> handled this fine, but as soon as I routed it through Apache using the warp
> connector, I found that data was not sent until the connection was closed
> (never, in the case of my servlet.)
>
> Traced the problem down to WarpResponse.java: for some reason it was
> inheriting its stream from OutputStream instead of ServletOutputStream,
> which was causing all sorts of problems. Also made sure it flushed the
> headers before trying to write body data.
>
> Seems to be going fine now, but this is my first patch so treat with
> caution!
I would propose another patch:
+++
--- catalina/src/share/org/apache/catalina/connector/ResponseBase.java 28 Sep
2001 23:34:02 -0000 1.19
+++ catalina/src/share/org/apache/catalina/connector/ResponseBase.java 8 Feb
2002 16:37:25 -0000
@@ -677,6 +677,7 @@
if (bufferCount > 0) {
try {
output.write(buffer, 0, bufferCount);
+ output.flush(); // otherwise does not work with mod_webapp ...
} finally {
bufferCount = 0;
}
+++
The code I have used to test is the following:
+++
ServletOutputStream out = response.getOutputStream();
out.println("<br>Jean-Frederic uses ServletOutputStream<br>");
out.flush();
+++
With the http connector it works without the output.flush()... But I have not
found why!
Any hints?
Cheers
Jean-frederic
>
> --
> Roger Nesbitt
>
> --------------------------------------------------------------------------------
> Name: warp-buffer-patch.txt
> warp-buffer-patch.txt Type: diff files (text/plain)
> Encoding: base64
>
> --------------------------------------------------------------------------------
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>