Pull up getBody message
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 19 Jun 2011 16:30:26 +0000 (16:30 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 19 Jun 2011 16:30:26 +0000 (16:30 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1137385 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/coyote/ajp/AbstractAjpProcessor.java
java/org/apache/coyote/ajp/AjpAprProcessor.java
java/org/apache/coyote/ajp/AjpNioProcessor.java
java/org/apache/coyote/ajp/AjpProcessor.java

index 6a813c2..eacfc4d 100644 (file)
@@ -115,6 +115,13 @@ public abstract class AbstractAjpProcessor extends AbstractProcessor {
 
 
     /**
+     * GetBody message array. Not static like the other message arrays since the
+     * message varies with packetSize and that can vary per connector.
+     */
+    protected final byte[] getBodyMessageArray;
+
+
+    /**
      * AJP packet size.
      */
     protected int packetSize;
@@ -219,6 +226,18 @@ public abstract class AbstractAjpProcessor extends AbstractProcessor {
         requestHeaderMessage = new AjpMessage(packetSize);
         responseHeaderMessage = new AjpMessage(packetSize);
         bodyMessage = new AjpMessage(packetSize);
+        
+        // Set the getBody message buffer
+        AjpMessage getBodyMessage = new AjpMessage(16);
+        getBodyMessage.reset();
+        getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
+        // Adjust read size if packetSize != default (Constants.MAX_PACKET_SIZE)
+        getBodyMessage.appendInt(Constants.MAX_READ_SIZE + packetSize -
+                Constants.MAX_PACKET_SIZE);
+        getBodyMessage.end();
+        getBodyMessageArray = new byte[getBodyMessage.getLen()];
+        System.arraycopy(getBodyMessage.getBuffer(), 0, getBodyMessageArray, 
+                         0, getBodyMessage.getLen());
     }
 
     
index 833d415..361a735 100644 (file)
@@ -72,18 +72,6 @@ public class AjpAprProcessor extends AbstractAjpProcessor {
 
         response.setOutputBuffer(new SocketOutputBuffer());
 
-        // Set the get body message buffer
-        AjpMessage getBodyMessage = new AjpMessage(16);
-        getBodyMessage.reset();
-        getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
-        // Adjust allowed size if packetSize != default (Constants.MAX_PACKET_SIZE)
-        getBodyMessage.appendInt(Constants.MAX_READ_SIZE + packetSize - Constants.MAX_PACKET_SIZE);
-        getBodyMessage.end();
-        getBodyMessageBuffer =
-            ByteBuffer.allocateDirect(getBodyMessage.getLen());
-        getBodyMessageBuffer.put(getBodyMessage.getBuffer(), 0,
-                                 getBodyMessage.getLen());
-
         // Allocate input and output buffers
         inputBuffer = ByteBuffer.allocateDirect(packetSize * 2);
         inputBuffer.limit(0);
@@ -119,12 +107,6 @@ public class AjpAprProcessor extends AbstractAjpProcessor {
     protected ByteBuffer outputBuffer = null;
 
 
-    /**
-     * Direct buffer used for sending right away a get body message.
-     */
-    protected final ByteBuffer getBodyMessageBuffer;
-
-
     // --------------------------------------------------------- Public Methods
 
 
@@ -452,8 +434,8 @@ public class AjpAprProcessor extends AbstractAjpProcessor {
         }
 
         // Request more data immediately
-        Socket.sendb(socket.getSocket().longValue(), getBodyMessageBuffer, 0,
-                getBodyMessageBuffer.position());
+        Socket.send(socket.getSocket().longValue(), getBodyMessageArray, 0,
+                getBodyMessageArray.length);
 
         boolean moreData = receive();
         if( !moreData ) {
index 85fbee5..39b164c 100644 (file)
@@ -67,17 +67,6 @@ public class AjpNioProcessor extends AbstractAjpProcessor {
 
         pool = endpoint.getSelectorPool();
 
-        // Set the get body message buffer
-        AjpMessage getBodyMessage = new AjpMessage(16);
-        getBodyMessage.reset();
-        getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
-        // Adjust allowed size if packetSize != default (Constants.MAX_PACKET_SIZE)
-        getBodyMessage.appendInt(Constants.MAX_READ_SIZE + packetSize - Constants.MAX_PACKET_SIZE);
-        getBodyMessage.end();
-        getBodyMessageArray = new byte[getBodyMessage.getLen()];
-        System.arraycopy(getBodyMessage.getBuffer(), 0, getBodyMessageArray, 
-                         0, getBodyMessage.getLen());
-
         // Cause loading of HexUtils
         HexUtils.load();
 
@@ -102,12 +91,6 @@ public class AjpNioProcessor extends AbstractAjpProcessor {
     protected NioSelectorPool pool;
 
 
-    /**
-     * Direct buffer used for sending right away a get body message.
-     */
-    protected final byte[] getBodyMessageArray;
-
-
     // --------------------------------------------------------- Public Methods
 
 
index 0a9d36b..fa1cf37 100644 (file)
@@ -71,17 +71,6 @@ public class AjpProcessor extends AbstractAjpProcessor {
 
         response.setOutputBuffer(new SocketOutputBuffer());
 
-        // Set the get body message buffer
-        AjpMessage getBodyMessage = new AjpMessage(16);
-        getBodyMessage.reset();
-        getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
-        // Adjust allowed size if packetSize != default (Constants.MAX_PACKET_SIZE)
-        getBodyMessage.appendInt(Constants.MAX_READ_SIZE + packetSize - Constants.MAX_PACKET_SIZE);
-        getBodyMessage.end();
-        getBodyMessageArray = new byte[getBodyMessage.getLen()];
-        System.arraycopy(getBodyMessage.getBuffer(), 0, getBodyMessageArray, 
-                         0, getBodyMessage.getLen());
-
         // Cause loading of HexUtils
         HexUtils.load();
 
@@ -112,15 +101,6 @@ public class AjpProcessor extends AbstractAjpProcessor {
     protected OutputStream output;
     
 
-    /**
-     * Direct buffer used for sending right away a get body message.
-     */
-    protected final byte[] getBodyMessageArray;
-
-
-    // ------------------------------------------------------------- Properties
-
-
     // --------------------------------------------------------- Public Methods