[jboss-svn-commits] JBL Code SVN: r5535 - labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 7 09:51:11 EDT 2006


Author: remy.maucherat at jboss.com
Date: 2006-08-07 09:51:10 -0400 (Mon, 07 Aug 2006)
New Revision: 5535

Modified:
   labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java
   labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/JIoEndpoint.java
Log:
- Fix acceptor thread doing socket options and handshake.

Modified: labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java
===================================================================
--- labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java	2006-08-07 13:36:42 UTC (rev 5534)
+++ labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/AprEndpoint.java	2006-08-07 13:51:10 UTC (rev 5535)
@@ -998,16 +998,9 @@
 
                 try {
                     // Allocate a new worker thread
-                    Worker workerThread = getWorkerThread();
                     // Accept the next incoming connection from the server socket
-                    long socket = Socket.accept(serverSock);
                     // Hand this socket off to an appropriate processor
-                    if (setSocketOptions(socket)) {
-                        workerThread.assign(socket);
-                    } else {
-                        // Close socket and pool right away
-                        Socket.destroy(socket);
-                    }
+                    getWorkerThread().assign(Socket.accept(serverSock), true);
                 } catch (Throwable t) {
                     log.error(sm.getString("endpoint.accept.fail"), t);
                 }
@@ -1167,7 +1160,7 @@
                                 continue;
                             }
                             // Hand this socket off to a worker
-                            getWorkerThread().assign(desc[n*2+1]);
+                            getWorkerThread().assign(desc[n*2+1], false);
                         }
                     } else if (rv < 0) {
                         int errn = -rv;
@@ -1219,6 +1212,7 @@
         protected Thread thread = null;
         protected boolean available = false;
         protected long socket = 0;
+        protected boolean options = false;
 
 
         /**
@@ -1230,7 +1224,7 @@
          *
          * @param socket TCP socket to process
          */
-        protected synchronized void assign(long socket) {
+        protected synchronized void assign(long socket, boolean options) {
 
             // Wait for the Processor to get the previous Socket
             while (available) {
@@ -1242,6 +1236,7 @@
 
             // Store the newly available Socket and notify our thread
             this.socket = socket;
+            this.options = options;
             available = true;
             notifyAll();
 
@@ -1287,7 +1282,7 @@
                     continue;
 
                 // Process the request from this socket
-                if (!handler.process(socket)) {
+                if ((options && !setSocketOptions(socket)) || !handler.process(socket)) {
                     // Close socket and pool
                     Socket.destroy(socket);
                     socket = 0;
@@ -1554,7 +1549,7 @@
                                     Socket.timeoutSet(state.socket, soTimeout * 1000);
                                     // If all done hand this socket off to a worker for
                                     // processing of further requests
-                                    getWorkerThread().assign(state.socket);
+                                    getWorkerThread().assign(state.socket, false);
                                 } else {
                                     // Close the socket since this is
                                     // the end of not keep-alive request.

Modified: labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/JIoEndpoint.java
===================================================================
--- labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/JIoEndpoint.java	2006-08-07 13:36:42 UTC (rev 5534)
+++ labs/jbossweb/trunk/src/share/classes/org/apache/tomcat/util/net/JIoEndpoint.java	2006-08-07 13:51:10 UTC (rev 5535)
@@ -271,17 +271,7 @@
 
                 // Accept the next incoming connection from the server socket
                 try {
-                    Socket socket = serverSocket.accept();
-                    // Hand this socket off to an appropriate processor
-                    if (setSocketOptions(socket)) {
-                        workerThread.assign(socket);
-                    } else {
-                        // Close socket right away
-                        try {
-                            socket.close();
-                        } catch (IOException e) {
-                        }
-                    }
+                    workerThread.assign(serverSocket.accept());
                 } catch (Throwable t) {
                     log.error(sm.getString("endpoint.accept.fail"), t);
                 }
@@ -372,7 +362,7 @@
                     continue;
 
                 // Process the request from this socket
-                if (!handler.process(socket)) {
+                if (!setSocketOptions(socket) || !handler.process(socket)) {
                     // Close socket
                     try {
                         socket.close();




More information about the jboss-svn-commits mailing list