From: markt Date: Sat, 18 Sep 2010 13:47:49 +0000 (+0000) Subject: Code clean-up X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=42ef1aa99b19417b1eae082cbc0e891b83d6d5de;p=tomcat7.0 Code clean-up Use a single method for unlockAccept git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@998468 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/tomcat/util/net/AbstractEndpoint.java b/java/org/apache/tomcat/util/net/AbstractEndpoint.java index c6e906ac9..9e31028a1 100644 --- a/java/org/apache/tomcat/util/net/AbstractEndpoint.java +++ b/java/org/apache/tomcat/util/net/AbstractEndpoint.java @@ -17,6 +17,7 @@ package org.apache.tomcat.util.net; import java.io.File; +import java.io.OutputStreamWriter; import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.StringTokenizer; @@ -303,7 +304,8 @@ public abstract class AbstractEndpoint { public void setThreadPriority(int threadPriority) { this.threadPriority = threadPriority; } public int getThreadPriority() { return threadPriority; } - + protected abstract boolean getDeferAccept(); + /** * Generic properties, introspected */ @@ -410,6 +412,19 @@ public abstract class AbstractEndpoint { getLog().debug("About to unlock socket for:"+saddr); } s.connect(saddr,getSocketProperties().getUnlockTimeout()); + if (getDeferAccept()) { + /* + * In the case of a deferred accept / accept filters we need to + * send data to wake up the accept. Send OPTIONS * to bypass + * even BSD accept filters. The Acceptor will discard it. + */ + OutputStreamWriter sw; + + sw = new OutputStreamWriter(s.getOutputStream(), "ISO-8859-1"); + sw.write("OPTIONS * HTTP/1.0\r\n" + + "User-Agent: Tomcat wakeup connection\r\n\r\n"); + sw.flush(); + } if (getLog().isDebugEnabled()) { getLog().debug("Socket unlock completed for:"+saddr); } diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java b/java/org/apache/tomcat/util/net/AprEndpoint.java index 3b278d13f..5e6afb3fb 100644 --- a/java/org/apache/tomcat/util/net/AprEndpoint.java +++ b/java/org/apache/tomcat/util/net/AprEndpoint.java @@ -587,59 +587,6 @@ public class AprEndpoint extends AbstractEndpoint { /** - * Unlock the server socket accept using a bogus connection. - */ - @Override - protected void unlockAccept() { - java.net.Socket s = null; - InetSocketAddress saddr = null; - try { - // Need to create a connection to unlock the accept(); - if (getAddress() == null) { - saddr = new InetSocketAddress("localhost", getPort()); - } else { - saddr = new InetSocketAddress(getAddress(),getPort()); - } - s = new java.net.Socket(); - s.setSoTimeout(getSocketProperties().getSoTimeout()); - // TODO Consider hard-coding to s.setSoLinger(true,0) - s.setSoLinger(getSocketProperties().getSoLingerOn(),getSocketProperties().getSoLingerTime()); - if (log.isDebugEnabled()) { - log.debug("About to unlock socket for:"+saddr); - } - s.connect(saddr,getSocketProperties().getUnlockTimeout()); - /* - * In the case of a deferred accept / accept filters we need to - * send data to wake up the accept. Send OPTIONS * to bypass even - * BSD accept filters. The Acceptor will discard it. - */ - if (deferAccept) { - OutputStreamWriter sw; - - sw = new OutputStreamWriter(s.getOutputStream(), "ISO-8859-1"); - sw.write("OPTIONS * HTTP/1.0\r\n" + - "User-Agent: Tomcat wakeup connection\r\n\r\n"); - sw.flush(); - } - if (log.isDebugEnabled()) { - log.debug("Socket unlock completed for:"+saddr); - } - } catch(Exception e) { - if (log.isDebugEnabled()) { - log.debug(sm.getString("endpoint.debug.unlock", "" + getPort()), e); - } - } finally { - if (s != null) { - try { - s.close(); - } catch (Exception e) { - // Ignore - } - } - } - } - - /** * Stop the endpoint. This will cause all processing threads to stop. */ public void stop() { diff --git a/java/org/apache/tomcat/util/net/JIoEndpoint.java b/java/org/apache/tomcat/util/net/JIoEndpoint.java index 2200c9da8..8c2bd315e 100644 --- a/java/org/apache/tomcat/util/net/JIoEndpoint.java +++ b/java/org/apache/tomcat/util/net/JIoEndpoint.java @@ -99,6 +99,16 @@ public class JIoEndpoint extends AbstractEndpoint { } + /** + * Is deferAccept supported? + */ + @Override + public boolean getDeferAccept() { + // Not supported + return false; + } + + // ------------------------------------------------ Handler Inner Interface /** diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java index 2f2c9a14e..b1526c884 100644 --- a/java/org/apache/tomcat/util/net/NioEndpoint.java +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java @@ -374,6 +374,15 @@ public class NioEndpoint extends AbstractEndpoint { this.useSendfile = useSendfile; } + /** + * Is deferAccept supported? + */ + @Override + public boolean getDeferAccept() { + // Not supported + return false; + } + public void setOomParachute(int oomParachute) { this.oomParachute = oomParachute; }