Author: markt
Date: Fri Aug 30 19:53:20 2013
New Revision: 1519057

URL: http://svn.apache.org/r1519057
Log:
Complete a TODO that allows the receive() method to be refactored so it is 
identical in all three AJP processors

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1519057&r1=1519056&r2=1519057&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Fri Aug 30 
19:53:20 2013
@@ -118,7 +118,7 @@ public class AjpProcessor extends Abstra
                     socket.getSocket().setSoTimeout(keepAliveTimeout);
                 }
                 // Get first message of the request
-                if (!readMessage(requestHeaderMessage)) {
+                if (!readMessage(requestHeaderMessage, true)) {
                     // This means a connection timeout
                     break;
                 }
@@ -321,10 +321,9 @@ public class AjpProcessor extends Abstra
 
         first = false;
         bodyMessage.reset();
-        if (!readMessage(bodyMessage)) {
-            // Invalid message
-            return false;
-        }
+
+        readMessage(bodyMessage, true);
+
         // No data received.
         if (bodyMessage.getLen() == 0) {
             // just the header
@@ -341,14 +340,17 @@ public class AjpProcessor extends Abstra
         return true;
     }
 
+
     /**
      * Read an AJP message.
      *
+     * @param message   The message to populate
+     * @param ignored   Not used in BIO
      * @return true if the message has been read, false if the short read
      *         didn't return anything
      * @throws IOException any other failure, including incomplete reads
      */
-    protected boolean readMessage(AjpMessage message)
+    protected boolean readMessage(AjpMessage message, boolean ignored)
         throws IOException {
 
         byte[] buf = message.getBuffer();
@@ -359,8 +361,8 @@ public class AjpProcessor extends Abstra
         int messageLength = message.processHeader(true);
         if (messageLength < 0) {
             // Invalid AJP header signature
-            // TODO: Throw some exception and close the connection to frontend.
-            return false;
+            throw new IOException(sm.getString("ajpmessage.invalidLength",
+                    Integer.valueOf(messageLength)));
         }
         else if (messageLength == 0) {
             // Zero length message.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to