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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org