Author: markt
Date: Tue Oct 22 12:54:33 2013
New Revision: 1534619

URL: http://svn.apache.org/r1534619
Log:
Latest attempt to address issues with APR/native, SSL and the drawboard example

Modified:
    
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java?rev=1534619&r1=1534618&r2=1534619&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java 
(original)
+++ 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java 
Tue Oct 22 12:54:33 2013
@@ -21,6 +21,8 @@ import java.io.IOException;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
 
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.jni.OS;
 import org.apache.tomcat.jni.Socket;
 import org.apache.tomcat.jni.Status;
@@ -28,6 +30,8 @@ import org.apache.tomcat.util.net.Socket
 
 public class AprServletInputStream extends AbstractServletInputStream {
 
+    private static final Log log = 
LogFactory.getLog(AprServletInputStream.class);
+
     private final SocketWrapper<Long> wrapper;
     private final long socket;
     private volatile boolean eagain = false;
@@ -92,6 +96,16 @@ public class AprServletInputStream exten
         } else if (-result == Status.EAGAIN) {
             eagain = true;
             return 0;
+        } else if (-result == Status.APR_EGENERAL && wrapper.isSecure()) {
+            // Not entirely sure why this is necessary. Testing to date has not
+            // identified any issues with this but log it so it can be tracked
+            // if it is suspected of causing issues in the future.
+            if (log.isDebugEnabled()) {
+                log.debug(sm.getString("apr.read.sslGeneralError",
+                        Long.valueOf(socket), wrapper));
+            }
+            eagain = true;
+            return 0;
         } else if (-result == Status.APR_EOF) {
             throw new EOFException(sm.getString("apr.clientAbort"));
         } else if ((OS.IS_WIN32 || OS.IS_WIN64) &&

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties?rev=1534619&r1=1534618&r2=1534619&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties 
Tue Oct 22 12:54:33 2013
@@ -26,6 +26,7 @@ upgrade.sis.write.ise=It is illegal to c
 
 apr.clientAbort=The client aborted the connection.
 apr.read.error=Unexpected error [{0}] reading data from the APR/native socket 
[{1}] with wrapper [{2}].
+apr.read.sslGeneralError=An APR general error was returned by the SSL read 
operation on APR/native socket [{0}] with wrapper [{1}]. It will be treated as 
EAGAIN and the socket returned to the poller.
 apr.write.error=Unexpected error [{0}] writing data to the APR/native socket 
[{1}] with wrapper [{2}].
 apr.closed=The socket [{0}] associated with this connection has been closed.
 



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

Reply via email to