Code clean-up
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 18 Sep 2010 13:47:49 +0000 (13:47 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 18 Sep 2010 13:47:49 +0000 (13:47 +0000)
Use a single method for unlockAccept

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@998468 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/tomcat/util/net/AbstractEndpoint.java
java/org/apache/tomcat/util/net/AprEndpoint.java
java/org/apache/tomcat/util/net/JIoEndpoint.java
java/org/apache/tomcat/util/net/NioEndpoint.java

index c6e906a..9e31028 100644 (file)
@@ -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);
             }
index 3b278d1..5e6afb3 100644 (file)
@@ -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() {
index 2200c9d..8c2bd31 100644 (file)
@@ -99,6 +99,16 @@ public class JIoEndpoint extends AbstractEndpoint {
     }
 
 
+    /**
+     * Is deferAccept supported?
+     */
+    @Override
+    public boolean getDeferAccept() {
+        // Not supported
+        return false;
+    }
+
+
     // ------------------------------------------------ Handler Inner Interface
 
     /**
index 2f2c9a1..b1526c8 100644 (file)
@@ -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;
     }