[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