You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/03/09 13:59:05 UTC

svn commit: r1665222 - /tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java

Author: markt
Date: Mon Mar  9 12:59:05 2015
New Revision: 1665222

URL: http://svn.apache.org/r1665222
Log:
Fix the 9.0.x version of BZ 57638. The assumption that a blocking read would fill the provided buffer was not valid.

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=1665222&r1=1665221&r2=1665222&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Mon Mar  9 12:59:05 2015
@@ -17,6 +17,7 @@
 package org.apache.coyote.ajp;
 
 import java.io.ByteArrayInputStream;
+import java.io.EOFException;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.net.InetAddress;
@@ -1517,8 +1518,17 @@ public class AjpProcessor extends Abstra
      */
     private boolean read(byte[] buf, int pos, int n, boolean block) throws IOException {
         int read = socketWrapper.read(block, buf, pos, n);
-        if (!block && read > 0 && read < n) {
-            socketWrapper.read(true, buf, pos + n, n - read);
+        if (read > 0 && read < n) {
+            int left = n - read;
+            int start = pos + read;
+            while (left > 0) {
+                read = socketWrapper.read(true, buf, start, left);
+                if (read == -1) {
+                    throw new EOFException();
+                }
+                left = left - read;
+                start = start + read;
+            }
         }
 
         return read > 0;



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