You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2014/03/12 16:39:13 UTC

svn commit: r1576786 - in /tomcat/trunk/java/org/apache/coyote/http11: Http11Nio2Protocol.java upgrade/Nio2Processor.java upgrade/Nio2ServletInputStream.java upgrade/Nio2ServletOutputStream.java

Author: remm
Date: Wed Mar 12 15:39:13 2014
New Revision: 1576786

URL: http://svn.apache.org/r1576786
Log:
Use a regular processSocket to cleanup after an error, so that the connection is removed, etc.

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Protocol.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Protocol.java?rev=1576786&r1=1576785&r2=1576786&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Protocol.java Wed Mar 12 15:39:13 2014
@@ -240,7 +240,7 @@ public class Http11Nio2Protocol extends 
         @Override
         public Http11Nio2Processor createProcessor() {
             Http11Nio2Processor processor = new Http11Nio2Processor(
-                    proto.getMaxHttpHeaderSize(), (Nio2Endpoint)proto.endpoint,
+                    proto.getMaxHttpHeaderSize(), (Nio2Endpoint) proto.endpoint,
                     proto.getMaxTrailerSize(), proto.getMaxExtensionSize());
             processor.setAdapter(proto.getAdapter());
             processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests());
@@ -265,7 +265,7 @@ public class Http11Nio2Protocol extends 
                 SocketWrapper<Nio2Channel> socket,
                 HttpUpgradeHandler httpUpgradeProcessor)
                 throws IOException {
-            return new Nio2Processor(socket, httpUpgradeProcessor);
+            return new Nio2Processor(proto.endpoint, socket, httpUpgradeProcessor);
         }
 
         @Override

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2Processor.java?rev=1576786&r1=1576785&r2=1576786&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2Processor.java Wed Mar 12 15:39:13 2014
@@ -20,6 +20,7 @@ import javax.servlet.http.HttpUpgradeHan
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.Nio2Channel;
 import org.apache.tomcat.util.net.SocketWrapper;
 
@@ -31,11 +32,12 @@ public class Nio2Processor extends Abstr
 
     private static final int INFINITE_TIMEOUT = -1;
 
-    public Nio2Processor(SocketWrapper<Nio2Channel> wrapper,
+    public Nio2Processor(AbstractEndpoint<Nio2Channel> endpoint,
+            SocketWrapper<Nio2Channel> wrapper,
             HttpUpgradeHandler httpUpgradeProcessor) {
         super(httpUpgradeProcessor,
-                new Nio2ServletInputStream(wrapper),
-                new Nio2ServletOutputStream(wrapper));
+                new Nio2ServletInputStream(endpoint, wrapper),
+                new Nio2ServletOutputStream(endpoint, wrapper));
 
         wrapper.setTimeout(INFINITE_TIMEOUT);
     }

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java?rev=1576786&r1=1576785&r2=1576786&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java Wed Mar 12 15:39:13 2014
@@ -26,19 +26,23 @@ import java.util.concurrent.ExecutionExc
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.Nio2Channel;
 import org.apache.tomcat.util.net.Nio2Endpoint;
+import org.apache.tomcat.util.net.SocketStatus;
 import org.apache.tomcat.util.net.SocketWrapper;
 
 public class Nio2ServletInputStream extends AbstractServletInputStream {
 
+    private final AbstractEndpoint<Nio2Channel> endpoint;
     private final SocketWrapper<Nio2Channel> wrapper;
     private final Nio2Channel channel;
     private final CompletionHandler<Integer, SocketWrapper<Nio2Channel>> completionHandler;
     private boolean flipped = false;
     private volatile boolean readPending = false;
 
-    public Nio2ServletInputStream(SocketWrapper<Nio2Channel> wrapper) {
+    public Nio2ServletInputStream(AbstractEndpoint<Nio2Channel> endpoint0, SocketWrapper<Nio2Channel> wrapper) {
+        this.endpoint = endpoint0;
         this.wrapper = wrapper;
         this.channel = wrapper.getSocket();
         this.completionHandler = new CompletionHandler<Integer, SocketWrapper<Nio2Channel>>() {
@@ -76,11 +80,7 @@ public class Nio2ServletInputStream exte
                     return;
                 }
                 onError(exc);
-                try {
-                    close();
-                } catch (IOException e) {
-                    // Ignore
-                }
+                endpoint.processSocket(attachment, SocketStatus.ERROR, true);
             }
         };
     }

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java?rev=1576786&r1=1576785&r2=1576786&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java Wed Mar 12 15:39:13 2014
@@ -27,19 +27,23 @@ import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.Nio2Channel;
 import org.apache.tomcat.util.net.Nio2Endpoint;
+import org.apache.tomcat.util.net.SocketStatus;
 import org.apache.tomcat.util.net.SocketWrapper;
 
 public class Nio2ServletOutputStream extends AbstractServletOutputStream<Nio2Channel> {
 
+    private final AbstractEndpoint<Nio2Channel> endpoint;
     private final Nio2Channel channel;
     private final int maxWrite;
     private final CompletionHandler<Integer, SocketWrapper<Nio2Channel>> completionHandler;
     private final Semaphore writePending = new Semaphore(1);
 
-    public Nio2ServletOutputStream(SocketWrapper<Nio2Channel> socketWrapper) {
+    public Nio2ServletOutputStream(AbstractEndpoint<Nio2Channel> endpoint0, SocketWrapper<Nio2Channel> socketWrapper) {
         super(socketWrapper);
+        this.endpoint = endpoint0;
         channel = socketWrapper.getSocket();
         maxWrite = channel.getBufHandler().getWriteBuffer().capacity();
         this.completionHandler = new CompletionHandler<Integer, SocketWrapper<Nio2Channel>>() {
@@ -58,11 +62,7 @@ public class Nio2ServletOutputStream ext
                     } catch (IOException e) {
                         attachment.setError(true);
                         onError(e);
-                        try {
-                            close();
-                        } catch (IOException ioe) {
-                            // Ignore
-                        }
+                        endpoint.processSocket(attachment, SocketStatus.ERROR, true);
                     }
                 }
             }
@@ -75,11 +75,7 @@ public class Nio2ServletOutputStream ext
                     return;
                 }
                 onError(exc);
-                try {
-                    close();
-                } catch (IOException e) {
-                    // Ignore
-                }
+                endpoint.processSocket(attachment, SocketStatus.ERROR, true);
             }
         };
     }



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