From: markt Date: Tue, 23 Aug 2011 11:40:05 +0000 (+0000) Subject: Pull up flush() X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=00f493d87a6f3c8903c588b38752c2467ff037d7;p=tomcat7.0 Pull up flush() APR (like BIO and NIO) now writes each AJP packet to the socket as soon as it is ready git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1160639 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/coyote/ajp/AbstractAjpProcessor.java b/java/org/apache/coyote/ajp/AbstractAjpProcessor.java index 50c9bc042..0acc719c5 100644 --- a/java/org/apache/coyote/ajp/AbstractAjpProcessor.java +++ b/java/org/apache/coyote/ajp/AbstractAjpProcessor.java @@ -537,7 +537,6 @@ public abstract class AbstractAjpProcessor extends AbstractProcessor { // Methods called by action() protected abstract void actionInternal(ActionCode actionCode, Object param); - protected abstract void flush(boolean tbd) throws IOException; protected abstract void finish() throws IOException; // Methods called by prepareResponse() @@ -557,6 +556,17 @@ public abstract class AbstractAjpProcessor extends AbstractProcessor { /** + * Callback to write data from the buffer. + */ + protected void flush(boolean explicit) throws IOException { + if (explicit && !finished) { + // Send the flush message + output(flushMessageArray, 0, flushMessageArray.length); + } + } + + + /** * After reading the request headers, we have to setup the request filters. */ protected void prepareRequest() { diff --git a/java/org/apache/coyote/ajp/AjpAprProcessor.java b/java/org/apache/coyote/ajp/AjpAprProcessor.java index b2a25f685..70c6fb838 100644 --- a/java/org/apache/coyote/ajp/AjpAprProcessor.java +++ b/java/org/apache/coyote/ajp/AjpAprProcessor.java @@ -269,6 +269,15 @@ public class AjpAprProcessor extends AbstractAjpProcessor { protected void output(byte[] src, int offset, int length) throws IOException { outputBuffer.put(src, offset, length); + + long socketRef = socket.getSocket().longValue(); + + if (outputBuffer.position() > 0) { + if ((socketRef != 0) && Socket.sendbb(socketRef, 0, outputBuffer.position()) < 0) { + throw new IOException(sm.getString("ajpprocessor.failedsend")); + } + outputBuffer.clear(); + } } @@ -497,28 +506,4 @@ public class AjpAprProcessor extends AbstractAjpProcessor { outputBuffer.clear(); } - - - /** - * Callback to write data from the buffer. - */ - @Override - protected void flush(boolean explicit) throws IOException { - - long socketRef = socket.getSocket().longValue(); - - if (outputBuffer.position() > 0) { - if ((socketRef != 0) && Socket.sendbb(socketRef, 0, outputBuffer.position()) < 0) { - throw new IOException(sm.getString("ajpprocessor.failedsend")); - } - outputBuffer.clear(); - } - // Send explicit flush message - if (explicit && !finished && (socketRef != 0)) { - if (Socket.send(socketRef, flushMessageArray, 0, - flushMessageArray.length) < 0) { - throw new IOException(sm.getString("ajpprocessor.failedflush")); - } - } - } } diff --git a/java/org/apache/coyote/ajp/AjpNioProcessor.java b/java/org/apache/coyote/ajp/AjpNioProcessor.java index 3bd59803c..48f1d9b65 100644 --- a/java/org/apache/coyote/ajp/AjpNioProcessor.java +++ b/java/org/apache/coyote/ajp/AjpNioProcessor.java @@ -486,14 +486,4 @@ public class AjpNioProcessor extends AbstractAjpProcessor { } - /** - * Callback to write data from the buffer. - */ - @Override - protected void flush(boolean explicit) throws IOException { - if (explicit && !finished) { - // Send the flush message - output(flushMessageArray, 0, flushMessageArray.length); - } - } } diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java index 6f524b7d4..d47b1eb06 100644 --- a/java/org/apache/coyote/ajp/AjpProcessor.java +++ b/java/org/apache/coyote/ajp/AjpProcessor.java @@ -433,16 +433,4 @@ public class AjpProcessor extends AbstractAjpProcessor { return true; } } - - - /** - * Callback to write data from the buffer. - */ - @Override - protected void flush(boolean explicit) throws IOException { - if (explicit && !finished) { - // Send the flush message - output.write(flushMessageArray); - } - } }