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