JBossWeb SVN: r838 - in trunk: res and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 19:29:06 -0400 (Fri, 31 Oct 2008)
New Revision: 838
Modified:
trunk/LICENSE
trunk/NOTICE
trunk/res/INSTALLLICENSE
trunk/res/jboss-web.nsi
Log:
- Adjust various notices.
Modified: trunk/LICENSE
===================================================================
--- trunk/LICENSE 2008-10-31 21:38:47 UTC (rev 837)
+++ trunk/LICENSE 2008-10-31 23:29:06 UTC (rev 838)
@@ -1,5 +1,5 @@
- GNU LESSER GENERAL PUBLIC LICENSE
+ GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Modified: trunk/NOTICE
===================================================================
--- trunk/NOTICE 2008-10-31 21:38:47 UTC (rev 837)
+++ trunk/NOTICE 2008-10-31 23:29:06 UTC (rev 838)
@@ -15,16 +15,13 @@
Java compilation software for JSP pages is provided by Eclipse,
which is open source software. The orginal software and
-related infomation is available at
-http://www.eclipse.org.
+related infomation is available at http://www.eclipse.org.
org.apache.tomcat.util.json
-Copyright (c) 2002 JSON.org
+Copyright 2002 JSON.org
-org.apache.cometd.bayeux is derivative work originating at the Dojo Foundation
-
org.apache.tomcat.bayeux
+Copyright 2007 Dojo Foundation
Copyright 2007-2008 Guy Molinari
Copyright 2007-2008 Filip Hanik
-Copyright 2007 Dojo Foundation
Copyright 2007 Mort Bay Consulting Pty. Ltd.
Modified: trunk/res/INSTALLLICENSE
===================================================================
--- trunk/res/INSTALLLICENSE 2008-10-31 21:38:47 UTC (rev 837)
+++ trunk/res/INSTALLLICENSE 2008-10-31 23:29:06 UTC (rev 838)
@@ -1,26 +1,5 @@
-JBoss Web
-Copyright 2006-2008 Red Hat Middleware, LLC. All rights reserved.
-Apache Tomcat
-Copyright 1999-2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-The Windows Installer is built with the Nullsoft
-Scriptable Install Sysem (NSIS), which is
-open source software. The original software and
-related information is available at
-http://nsis.sourceforge.net.
-
-Java compilation software for JSP pages is provided by Eclipse,
-which is open source software. The orginal software and
-related infomation is available at
-http://www.eclipse.org.
-
-
-
- GNU LESSER GENERAL PUBLIC LICENSE
+ GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
@@ -185,3 +164,34 @@
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+
+
+
+
+JBoss Web
+Copyright 2006-2008 Red Hat Middleware, LLC. All rights reserved.
+
+Apache Tomcat
+Copyright 1999-2008 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+The Windows Installer is built with the
+Nullsoft Scriptable Install Sysem (NSIS), which is
+open source software. The original software and
+related information is available at
+http://nsis.sourceforge.net.
+
+Java compilation software for JSP pages is provided by Eclipse,
+which is open source software. The orginal software and
+related infomation is available at http://www.eclipse.org.
+
+org.apache.tomcat.util.json
+Copyright 2002 JSON.org
+
+org.apache.tomcat.bayeux
+Copyright 2007 Dojo Foundation
+Copyright 2007-2008 Guy Molinari
+Copyright 2007-2008 Filip Hanik
+Copyright 2007 Mort Bay Consulting Pty. Ltd.
Modified: trunk/res/jboss-web.nsi
===================================================================
--- trunk/res/jboss-web.nsi 2008-10-31 21:38:47 UTC (rev 837)
+++ trunk/res/jboss-web.nsi 2008-10-31 23:29:06 UTC (rev 838)
@@ -520,7 +520,11 @@
; File will be written using current windows codepage
System::Call 'Kernel32::GetACP() i .r18'
- FileWrite $R9 "<?xml version='1.0' encoding='cp$R8'?>$\r$\n"
+ StrCmp $R8 "932" 0 +3
+ ; Special case where Java uses non-standard name for character set
+ FileWrite $R9 "<?xml version='1.0' encoding='ms$R8'?>$\r$\n"
+ Goto +2
+ FileWrite $R9 "<?xml version='1.0' encoding='cp$R8'?>$\r$\n"
Push "$TEMP\confinstall\tomcat-users_1.xml"
Call copyFile
16 years, 2 months
JBossWeb SVN: r837 - in trunk: webapps/docs and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 17:38:47 -0400 (Fri, 31 Oct 2008)
New Revision: 837
Modified:
trunk/build.properties.default
trunk/webapps/docs/changelog.xml
Log:
- JDT 3.4.1.
Modified: trunk/build.properties.default
===================================================================
--- trunk/build.properties.default 2008-10-31 17:10:39 UTC (rev 836)
+++ trunk/build.properties.default 2008-10-31 21:38:47 UTC (rev 837)
@@ -39,8 +39,8 @@
# ----- Eclipse JDT, version 3.2 or later -----
jdt.home=${base.path}/eclipse/plugins
jdt.lib=${jdt.home}
-jdt.jar=${jdt.lib}/org.eclipse.jdt.core_3.4.0.v_874.jar
-jdt.loc=http://download.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/eclipse-JDT-3.4.zip
+jdt.jar=${jdt.lib}/org.eclipse.jdt.core_3.4.2.v_883_R34x.jar
+jdt.loc=http://download.eclipse.org/eclipse/downloads/drops/R-3.4.1-200809111700/eclipse-JDT-3.4.1.zip
# ----- Commons DBCP, version 1.1 or later -----
commons-dbcp.version=1.2.2
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-10-31 17:10:39 UTC (rev 836)
+++ trunk/webapps/docs/changelog.xml 2008-10-31 21:38:47 UTC (rev 837)
@@ -25,6 +25,9 @@
<update>
JBoss Native 2.0.6. (remm)
</update>
+ <update>
+ Eclipse JDT 3.4.1. (remm)
+ </update>
</changelog>
</subsection>
<subsection name="Catalina">
16 years, 2 months
JBossWeb SVN: r836 - in trunk/java/org/apache: coyote/http11 and 1 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 13:10:39 -0400 (Fri, 31 Oct 2008)
New Revision: 836
Modified:
trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Log:
- Handle cases where process fails, remove timeout in some cases.
- Do setTimeout after recycling, as I've seen it fail (JBWEB-125).
Modified: trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
===================================================================
--- trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 2008-10-31 17:08:53 UTC (rev 835)
+++ trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 2008-10-31 17:10:39 UTC (rev 836)
@@ -269,10 +269,10 @@
req.getRequestProcessor().setWorkerThreadName(null);
// Recycle the wrapper request and response
if (error || close || response.isClosed()) {
- res.action(ActionCode.ACTION_COMET_END, null);
request.recycle();
request.setFilterChain(null);
response.recycle();
+ res.action(ActionCode.ACTION_COMET_END, null);
}
}
Modified: trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
===================================================================
--- trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 2008-10-31 17:08:53 UTC (rev 835)
+++ trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 2008-10-31 17:10:39 UTC (rev 836)
@@ -1259,9 +1259,9 @@
} else if (actionCode == ActionCode.ACTION_COMET_END) {
comet = false;
// End non blocking mode
- Socket.timeoutSet(socket, endpoint.getSoTimeout() * 1000);
outputBuffer.setNonBlocking(false);
inputBuffer.setNonBlocking(false);
+ Socket.timeoutSet(socket, endpoint.getSoTimeout() * 1000);
} else if (actionCode == ActionCode.ACTION_COMET_SUSPEND) {
readNotifications = false;
} else if (actionCode == ActionCode.ACTION_COMET_RESUME) {
Modified: trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
===================================================================
--- trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2008-10-31 17:08:53 UTC (rev 835)
+++ trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2008-10-31 17:10:39 UTC (rev 836)
@@ -1669,7 +1669,9 @@
// Resume event
timeouts.remove(info.socket);
removeFromPoller(info.socket);
- processSocket(info.socket, SocketStatus.OPEN_CALLBACK);
+ if (!processSocket(info.socket, SocketStatus.OPEN_CALLBACK)) {
+ Socket.destroy(info.socket);
+ }
} else {
// Store timeout
timeouts.add(info.socket, System.currentTimeMillis() + info.timeout);
@@ -1680,6 +1682,7 @@
| ((info.write()) ? Poll.APR_POLLOUT : 0);
if (!addToPoller(info.socket, events)) {
// Can't do anything: close the socket right away
+ timeouts.remove(info.socket);
if (!comet || (comet && !processSocket(info.socket, SocketStatus.ERROR))) {
Socket.destroy(info.socket);
}
@@ -1692,7 +1695,9 @@
// Resume event
timeouts.remove(info.socket);
removeFromPoller(info.socket);
- processSocket(info.socket, SocketStatus.OPEN_CALLBACK);
+ if (!processSocket(info.socket, SocketStatus.OPEN_CALLBACK)) {
+ Socket.destroy(info.socket);
+ }
} else {
// Suspend
timeouts.add(info.socket, System.currentTimeMillis() + info.timeout);
@@ -1700,7 +1705,9 @@
} else {
// Should never happen, if not Comet, the socket is always put in
// the list with the read flag.
+ timeouts.remove(info.socket);
Socket.destroy(info.socket);
+ log.error(sm.getString("endpoint.poll.error"));
}
}
info = localAddList.get();
16 years, 2 months
JBossWeb SVN: r835 - in trunk: webapps/docs and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 13:08:53 -0400 (Fri, 31 Oct 2008)
New Revision: 835
Modified:
trunk/res/confinstall/server_2.xml
trunk/webapps/docs/apr.xml
Log:
- Small fixes.
Modified: trunk/res/confinstall/server_2.xml
===================================================================
--- trunk/res/confinstall/server_2.xml 2008-10-31 14:37:01 UTC (rev 834)
+++ trunk/res/confinstall/server_2.xml 2008-10-31 17:08:53 UTC (rev 835)
@@ -1,11 +1,9 @@
protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" />
- -->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
@@ -13,7 +11,7 @@
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
- <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
+ <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
Modified: trunk/webapps/docs/apr.xml
===================================================================
--- trunk/webapps/docs/apr.xml 2008-10-31 14:37:01 UTC (rev 834)
+++ trunk/webapps/docs/apr.xml 2008-10-31 17:08:53 UTC (rev 835)
@@ -291,8 +291,7 @@
<p>
An example SSL Connector declaration can be:
<source>
- <Connector port="443" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
+ <Connector port="443" maxHttpHeaderSize="8192" maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
16 years, 2 months
JBossWeb SVN: r834 - in trunk: webapps/docs and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 10:37:01 -0400 (Fri, 31 Oct 2008)
New Revision: 834
Modified:
trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
trunk/webapps/docs/changelog.xml
Log:
- Redo maintain in a simpler way, as trying to call maintain only when needed cannot possibly work.
Modified: trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
===================================================================
--- trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2008-10-31 04:48:24 UTC (rev 833)
+++ trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2008-10-31 14:37:01 UTC (rev 834)
@@ -1366,7 +1366,14 @@
*/
protected SocketTimeouts timeouts = null;
+
/**
+ * Last run of maintain. Maintain will run usually every 5s.
+ */
+ protected long lastMaintain = System.currentTimeMillis();
+
+
+ /**
* Amount of connections inside this poller.
*/
protected int connectionCount = 0;
@@ -1577,6 +1584,12 @@
protected void maintain() {
long date = System.currentTimeMillis();
+ // Maintain runs at most once every 5s, although it will likely get called more
+ if ((date - lastMaintain) < 5000L) {
+ return;
+ } else {
+ lastMaintain = date;
+ }
long socket = timeouts.check(date);
while (socket != 0) {
removeFromPoller(socket);
@@ -1612,7 +1625,7 @@
*/
public void run() {
- long maintainTime = 0;
+ int maintain = 0;
// Loop until we receive a shutdown command
while (running) {
@@ -1627,14 +1640,13 @@
// Check timeouts for suspended connections if the poller is empty
while (connectionCount < 1 && addList.size() < 1) {
// Reset maintain time.
- maintainTime = 1;
try {
+ if (soTimeout > 0 && running) {
+ maintain();
+ }
synchronized (this) {
this.wait(10000);
}
- if (soTimeout > 0 && connectionCount < 1 && addList.size() < 1 && running) {
- maintain();
- }
} catch (InterruptedException e) {
// Ignore
} catch (Throwable t) {
@@ -1695,8 +1707,6 @@
}
}
- maintainTime += pollTime;
-
// Poll for the specified interval
for (int i = 0; i < pollers.length; i++) {
@@ -1798,16 +1808,15 @@
}
// Process socket timeouts
- if (soTimeout > 0 && maintainTime > 1000000L && running) {
+ if (soTimeout > 0 && maintain++ > 1000 && running) {
// This works and uses only one timeout mechanism for everything, but the
// non Comet poller might be a bit faster by using the old maintain.
- maintainTime = 0;
+ maintain = 0;
maintain();
- maintainTime = 1;
}
} catch (Throwable t) {
- if (maintainTime == 0) {
+ if (maintain == 0) {
log.error(sm.getString("endpoint.maintain.error"), t);
} else {
log.error(sm.getString("endpoint.poll.error"), t);
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-10-31 04:48:24 UTC (rev 833)
+++ trunk/webapps/docs/changelog.xml 2008-10-31 14:37:01 UTC (rev 834)
@@ -100,7 +100,7 @@
Allow AJP to read large body packets, up to the configured packet size. (remm)
</fix>
<fix>
- Remote date tool class, since it has sync issues. (markt, remm)
+ Remove date tool class, since it has sync issues. (markt, remm)
</fix>
<add>
Add AJP support for certificate chains. (billbarker)
@@ -112,7 +112,7 @@
Handling for invalid AJP messages. (remm)
</fix>
<fix>
- New maxThreads default to 200, up from 40. (remm)
+ New maxThreads default to 200, up from 40. (remm, fhanik)
</fix>
<fix>
<bug>46077</bug>: Add configuration for deferAccept flag. (remm)
@@ -126,6 +126,12 @@
<fix>
Refactor generation of the READ event which follows a BEGIN into the HTTP protocol handler. (remm)
</fix>
+ <fix>
+ <jira>124</jira>: Comet instability fixes. (remm)
+ </fix>
+ <fix>
+ Fix timeout processing in many cases. (remm)
+ </fix>
</changelog>
</subsection>
<subsection name="Jasper">
@@ -158,7 +164,7 @@
<subsection name="Others">
<changelog>
<fix>
- <jboss-jira>JBWEB-122</jboss-jira>: Fix exception when using SSL and HTTP variables. (jfclere)
+ <jira>122</jira>: Fix exception when using SSL and HTTP variables. (jfclere)
</fix>
</changelog>
</subsection>
16 years, 2 months
JBossWeb SVN: r833 - trunk/java/org/apache/tomcat/util/net.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 00:48:24 -0400 (Fri, 31 Oct 2008)
New Revision: 833
Modified:
trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Log:
- Small tweaks.
- Rewrite the main if as a more conventional if/then/else (in one case with Comet, it is possible it could have caused problems).
- Fix remove from poller return value.
- Add a better poller reset code, not really used right now (I'm sticking with destroy for POLLHUP, as Poll.pollset returns
apparently funny results; totally handy when debugging as well).
- Fix all the comet calls for processSocket (false means that it was not possible to process, which should almost never
happen).
- The bayeux test looks really solid now, so I suppose this means JBWEB-124 is now accidentally ok.
- Need to test timeouts again.
Modified: trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
===================================================================
--- trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2008-10-31 04:29:20 UTC (rev 832)
+++ trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2008-10-31 04:48:24 UTC (rev 833)
@@ -57,7 +57,6 @@
// -------------------------------------------------------------- Constants
-
protected static Logger log = Logger.getLogger(AprEndpoint.class);
protected static StringManager sm =
@@ -1448,9 +1447,7 @@
// Close all sockets in the add queue
SocketInfo info = addList.get();
while (info != null) {
- if (comet) {
- processSocket(info.socket, SocketStatus.STOP);
- } else {
+ if (!comet || (comet && !processSocket(info.socket, SocketStatus.STOP))) {
Socket.destroy(info.socket);
}
info = addList.get();
@@ -1461,9 +1458,7 @@
int rv = Poll.pollset(pollers[i], desc);
if (rv > 0) {
for (int n = 0; n < rv; n++) {
- if (comet) {
- processSocket(desc[n*2+1], SocketStatus.STOP);
- } else {
+ if (!comet || (comet && !processSocket(desc[n*2+1], SocketStatus.STOP))) {
Socket.destroy(desc[n*2+1]);
}
}
@@ -1497,9 +1492,7 @@
}
if (!ok) {
// Can't do anything: close the socket right away
- if (comet) {
- processSocket(socket, SocketStatus.ERROR);
- } else {
+ if (!comet || (comet && !processSocket(socket, SocketStatus.ERROR))) {
Socket.destroy(socket);
}
}
@@ -1536,9 +1529,7 @@
}
if (!ok) {
// Can't do anything: close the socket right away
- if (comet) {
- processSocket(socket, SocketStatus.ERROR);
- } else {
+ if (!comet || (comet && !processSocket(socket, SocketStatus.ERROR))) {
Socket.destroy(socket);
}
}
@@ -1548,7 +1539,7 @@
* Add specified socket to one of the pollers.
*/
protected boolean addToPoller(long socket, int events) {
- int rv = 0;
+ int rv = -1;
for (int i = 0; i < pollers.length; i++) {
if (pollerSpace[i] > 0) {
rv = Poll.add(pollers[i], socket, events);
@@ -1566,7 +1557,7 @@
* Remove specified socket from the pollers.
*/
protected boolean removeFromPoller(long socket) {
- int rv = 0;
+ int rv = -1;
for (int i = 0; i < pollers.length; i++) {
if (pollerSpace[i] < actualPollerSize) {
rv = Poll.remove(pollers[i], socket);
@@ -1589,9 +1580,7 @@
long socket = timeouts.check(date);
while (socket != 0) {
removeFromPoller(socket);
- if (comet) {
- processSocket(socket, SocketStatus.TIMEOUT);
- } else {
+ if (!comet || (comet && !processSocket(socket, SocketStatus.TIMEOUT))) {
Socket.destroy(socket);
}
socket = timeouts.check(date);
@@ -1600,6 +1589,24 @@
}
/**
+ * Displays the list of sockets in the pollers.
+ */
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ buf.append("Poller comet=[").append(comet).append("]");
+ long[] res = new long[actualPollerSize * 2];
+ for (int i = 0; i < pollers.length; i++) {
+ int count = Poll.pollset(pollers[i], res);
+ buf.append(" [ ");
+ for (int j = 0; j < count; j++) {
+ buf.append(desc[2*j+1]).append(" ");
+ }
+ buf.append("]");
+ }
+ return buf.toString();
+ }
+
+ /**
* The background thread that listens for incoming TCP/IP connections and
* hands them off to an appropriate processor.
*/
@@ -1661,9 +1668,7 @@
| ((info.write()) ? Poll.APR_POLLOUT : 0);
if (!addToPoller(info.socket, events)) {
// Can't do anything: close the socket right away
- if (comet) {
- processSocket(info.socket, SocketStatus.ERROR);
- } else {
+ if (!comet || (comet && !processSocket(info.socket, SocketStatus.ERROR))) {
Socket.destroy(info.socket);
}
}
@@ -1682,7 +1687,7 @@
}
} else {
// Should never happen, if not Comet, the socket is always put in
- // the list with the read flag.
+ // the list with the read flag.
Socket.destroy(info.socket);
}
}
@@ -1694,6 +1699,11 @@
// Poll for the specified interval
for (int i = 0; i < pollers.length; i++) {
+
+ // Flags to ask to reallocate the pool
+ boolean reset = false;
+ ArrayList<Long> skip = null;
+
int rv = 0;
// Iterate on each pollers, but no need to poll empty pollers
if (pollerSpace[i] < actualPollerSize) {
@@ -1705,22 +1715,52 @@
for (int n = 0; n < rv; n++) {
timeouts.remove(desc[n*2+1]);
// Check for failed sockets and hand this socket off to a worker
- if (((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP)
- || ((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR)
- // Comet processes either a read or a write depending on what the poller returns
- || (comet &&
- (((desc[n*2] & Poll.APR_POLLIN) == Poll.APR_POLLIN)
- && !processSocket(desc[n*2+1], SocketStatus.OPEN_READ))
- || (((desc[n*2] & Poll.APR_POLLOUT) == Poll.APR_POLLOUT)
- && !processSocket(desc[n*2+1], SocketStatus.OPEN_WRITE)))
- || (!comet && !processSocket(desc[n*2+1]))) {
+ if (comet) {
+ // Comet processes either a read or a write depending on what the poller returns
+ if (((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP)
+ || ((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR)) {
+ if (!processSocket(desc[n*2+1], SocketStatus.ERROR)) {
+ // Close socket and clear pool
+ Socket.destroy(desc[n*2+1]);
+ }
+ // FIXME: decide vs destroy
+ /*
+ if ((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP) {
+ // Destroy and reallocate the poller
+ reset = true;
+ if (skip == null) {
+ skip = new ArrayList<Long>();
+ }
+ skip.add(desc[n*2+1]);
+ }*/
+ } else if ((desc[n*2] & Poll.APR_POLLIN) == Poll.APR_POLLIN) {
+ if (!processSocket(desc[n*2+1], SocketStatus.OPEN_READ)) {
+ // Close socket and clear pool
+ Socket.destroy(desc[n*2+1]);
+ }
+ } else if ((desc[n*2] & Poll.APR_POLLOUT) == Poll.APR_POLLOUT) {
+ if (!processSocket(desc[n*2+1], SocketStatus.OPEN_WRITE)) {
+ // Close socket and clear pool
+ Socket.destroy(desc[n*2+1]);
+ }
+ }
+ } else if (((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP)
+ || ((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR)) {
// Close socket and clear pool
- if (comet) {
- processSocket(desc[n*2+1], SocketStatus.DISCONNECT);
- } else {
- Socket.destroy(desc[n*2+1]);
- }
- continue;
+ Socket.destroy(desc[n*2+1]);
+ // FIXME: decide vs destroy
+ /*
+ if ((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP) {
+ // Destroy and reallocate the poller
+ reset = true;
+ if (skip == null) {
+ skip = new ArrayList<Long>();
+ }
+ skip.add(desc[n*2+1]);
+ }*/
+ } else if (!processSocket(desc[n*2+1])) {
+ // Close socket and clear pool
+ Socket.destroy(desc[n*2+1]);
}
}
} else if (rv < 0) {
@@ -1731,14 +1771,30 @@
errn -= Status.APR_OS_START_USERERR;
}
log.error(sm.getString("endpoint.poll.fail", "" + errn, Error.strerror(errn)));
- // Handle poll critical failure
- synchronized (this) {
- destroy();
- init();
+ // Destroy and reallocate the poller
+ reset = true;
+ }
+ }
+
+ if (reset) {
+ // Reallocate the current poller
+ int count = Poll.pollset(pollers[i], desc);
+ long newPoller = allocatePoller(actualPollerSize, pool, -1);
+ for (int j = 0; j < count; j++) {
+ int events = (int) desc[2*j];
+ long socket = desc[2*j+1];
+ Poll.remove(pollers[i], socket);
+ if (skip != null && skip.contains(socket)) {
+ continue;
}
- continue;
+ if (Poll.add(newPoller, socket, events) != Status.APR_SUCCESS) {
+ // Skip
+ }
}
+ Poll.destroy(pollers[i]);
+ pollers[i] = newPoller;
}
+
}
// Process socket timeouts
@@ -1910,10 +1966,8 @@
if (serverSockPool != 0) {
Socket.destroy(socket);
}
- socket = 0;
}
} else {
-
// Process the request from this socket
if ((status != null) && (handler.event(socket, status) == Handler.SocketState.CLOSED)) {
// Close socket and pool only if it wasn't closed
@@ -1921,7 +1975,6 @@
if (serverSockPool != 0) {
Socket.destroy(socket);
}
- socket = 0;
} else if ((status == null) && ((options && !setSocketOptions(socket))
|| handler.process(socket) == Handler.SocketState.CLOSED)) {
// Close socket and pool only if it wasn't closed
@@ -1929,7 +1982,6 @@
if (serverSockPool != 0) {
Socket.destroy(socket);
}
- socket = 0;
}
}
@@ -2359,7 +2411,6 @@
} else {
// Close socket and pool
Socket.destroy(socket);
- socket = 0;
}
} else {
// Process the request from this socket
@@ -2367,9 +2418,9 @@
|| handler.process(socket) == Handler.SocketState.CLOSED) {
// Close socket and pool
Socket.destroy(socket);
- socket = 0;
}
}
+ socket = 0;
}
@@ -2397,8 +2448,8 @@
if (handler.process(socket) == Handler.SocketState.CLOSED) {
// Close socket and pool
Socket.destroy(socket);
- socket = 0;
}
+ socket = 0;
}
@@ -2428,8 +2479,8 @@
if (handler.event(socket, status) == Handler.SocketState.CLOSED) {
// Close socket and pool
Socket.destroy(socket);
- socket = 0;
}
+ socket = 0;
}
16 years, 2 months
JBossWeb SVN: r832 - in trunk/test/java/org: apache and 4 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-31 00:29:20 -0400 (Fri, 31 Oct 2008)
New Revision: 832
Added:
trunk/test/java/org/jboss/
trunk/test/java/org/jboss/web/
trunk/test/java/org/jboss/web/comet/
trunk/test/java/org/jboss/web/comet/CometServletTest1.java
trunk/test/java/org/jboss/web/comet/CometServletTest2.java
trunk/test/java/org/jboss/web/rewrite/
trunk/test/java/org/jboss/web/rewrite/RewriteTestCase.java
Removed:
trunk/test/java/org/apache/jboss/
Log:
- Fix obvious path mistake.
Added: trunk/test/java/org/jboss/web/comet/CometServletTest1.java
===================================================================
--- trunk/test/java/org/jboss/web/comet/CometServletTest1.java (rev 0)
+++ trunk/test/java/org/jboss/web/comet/CometServletTest1.java 2008-10-31 04:29:20 UTC (rev 832)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.web.comet;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+
+import org.jboss.servlet.http.HttpEvent;
+import org.jboss.servlet.http.HttpEventServlet;
+
+public class CometServletTest1 extends HttpServlet implements HttpEventServlet {
+
+ int count = 0;
+
+ public void event(HttpEvent event) throws IOException, ServletException {
+ System.out.println("[" + event.getHttpServletRequest().getSession(true).getId() + "] " + event.getType());
+ switch (event.getType()) {
+ case BEGIN:
+ //event.suspend();
+ break;
+ case END:
+ break;
+ case ERROR:
+ event.close();
+ break;
+ case EVENT:
+ ServletOutputStream os = event.getHttpServletResponse().getOutputStream();
+ // Using while (true): Not checking if the connection is available to writing immediately
+ // will cause the write to be performed in blocking mode.
+ // boolean b = true;
+ // while (b) {
+ while (event.isWriteReady()) {
+ if (count % 100 == 0) {
+ os.println((count++) + " ");
+ } else {
+ os.print((count++) + " ");
+ }
+ }
+ //if (event.ready())
+ // os.flush();
+ break;
+ case READ:
+ ServletInputStream is = event.getHttpServletRequest().getInputStream();
+ // Using while (true): Not checking if input is available will trigger a blocking
+ // read. No other event should be triggered (the current READ event will be in progress
+ // until the read timeouts, which will trigger an ERROR event due to an IOException).
+ // while (true) {
+ while (is.available() > 0) {
+ int c = is.read();
+ if (c > 0) {
+ System.out.print((char) c);
+ } else {
+ System.out.print(c);
+ break;
+ }
+ }
+ System.out.println();
+ break;
+ case TIMEOUT:
+ // This will cause a generic event to be sent to the servlet every time the connection is idle for
+ // a while.
+ event.resume();
+ break;
+ case WRITE:
+ break;
+ }
+ }
+
+}
Added: trunk/test/java/org/jboss/web/comet/CometServletTest2.java
===================================================================
--- trunk/test/java/org/jboss/web/comet/CometServletTest2.java (rev 0)
+++ trunk/test/java/org/jboss/web/comet/CometServletTest2.java 2008-10-31 04:29:20 UTC (rev 832)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.web.comet;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import org.jboss.servlet.http.HttpEvent;
+import org.jboss.servlet.http.HttpEventServlet;
+
+public class CometServletTest2 extends HttpServlet implements HttpEventServlet {
+
+ int count = 0;
+
+ public void event(HttpEvent event) throws IOException, ServletException {
+ System.out.println("[" + event.getHttpServletRequest().getSession(true).getId() + "] " + event.getType());
+ switch (event.getType()) {
+ case BEGIN:
+ //event.suspend();
+ break;
+ case END:
+ break;
+ case ERROR:
+ event.close();
+ break;
+ case EVENT:
+ Writer writer = event.getHttpServletResponse().getWriter();
+ // Using while (true): Not checking if the connection is available to writing immediately
+ // will cause the write to be performed in blocking mode.
+ // boolean b = true;
+ // while (b) {
+ while (event.isWriteReady()) {
+ if (count % 100 == 0) {
+ writer.write((count++) + " \r\n");
+ } else {
+ writer.write((count++) + " ");
+ }
+ }
+ //if (event.ready())
+ // os.flush();
+ break;
+ case READ:
+ BufferedReader reader = event.getHttpServletRequest().getReader();
+ // Using while (true): Not checking if input is available will trigger a blocking
+ // read. No other event should be triggered (the current READ event will be in progress
+ // until the read timeouts, which will trigger an ERROR event due to an IOException).
+ // while (true) {
+ while (reader.ready()) {
+ int c = reader.read();
+ if (c > 0) {
+ System.out.print((char) c);
+ } else {
+ System.out.print(c);
+ break;
+ }
+ }
+ System.out.println();
+ break;
+ case TIMEOUT:
+ // This will cause a generic event to be sent to the servlet every time the connection is idle for
+ // a while.
+ event.resume();
+ break;
+ case WRITE:
+ break;
+ }
+ }
+
+}
Added: trunk/test/java/org/jboss/web/rewrite/RewriteTestCase.java
===================================================================
--- trunk/test/java/org/jboss/web/rewrite/RewriteTestCase.java (rev 0)
+++ trunk/test/java/org/jboss/web/rewrite/RewriteTestCase.java 2008-10-31 04:29:20 UTC (rev 832)
@@ -0,0 +1,212 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.web.rewrite;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class RewriteTestCase extends TestCase {
+
+ protected class TestResolver extends Resolver {
+
+ public String resolve(String key) {
+ return "server_variable_value[" + key + "]";
+ }
+
+ public String resolveHttp(String key) {
+ return "http_header_value[" + key + "]";
+ }
+
+ public String resolveSsl(String key) {
+ return "ssl_property_value[" + key + "]";
+ }
+
+ public boolean resolveResource(int type, String name) {
+ return true;
+ }
+
+ }
+
+ /**
+ * Construct a new instance of this test case.
+ *
+ * @param name Name of the test case
+ */
+ public RewriteTestCase(String name) {
+ super(name);
+ }
+
+ /**
+ * Set up instance variables required by this test case.
+ */
+ public void setUp() {
+ }
+
+ /**
+ * Return the tests included in this test suite.
+ */
+ public static Test suite() {
+ return (new TestSuite(RewriteTestCase.class));
+ }
+
+ /**
+ * Tear down instance variables required by this test case.
+ */
+ public void tearDown() {
+ }
+
+ public void testCanonicalUrl() {
+ Resolver resolver = new TestResolver();
+
+ RewriteRule rule1 = new RewriteRule();
+ rule1.setPatternString("^/~([^/]+)/?(.*)");
+ rule1.setSubstitutionString("/u/$1/$2");
+
+ RewriteRule rule2 = new RewriteRule();
+ rule2.setPatternString("^/([uge])/([^/]+)$");
+ rule2.setSubstitutionString("/$1/$2/");
+
+ RewriteRule[] rules = new RewriteRule[2];
+ rules[0] = rule1;
+ rules[1] = rule2;
+ for (int i = 0; i < rules.length; i++) {
+ rules[i].parse(null);
+ }
+
+ String result = rewriteUrl("/~user/foo/bar", resolver, rules).toString();
+ assertEquals("/u/user/foo/bar", result);
+ result = rewriteUrl("/u/user", resolver, rules).toString();
+ assertEquals("/u/user/", result);
+ }
+
+ public void testCanonicalHostname() {
+ Resolver resolver = new TestResolver();
+
+ RewriteRule rule = new RewriteRule();
+ rule.setPatternString("^/(.*)");
+ rule.setSubstitutionString("http://fully.qualified.domain.name:%{SERVER_PORT}/$1");
+ RewriteRule[] rules = new RewriteRule[1];
+ rules[0] = rule;
+
+ RewriteCond cond1 = new RewriteCond();
+ cond1.setTestString("%{HTTP_HOST}");
+ cond1.setCondPattern("!^fully\\.qualified\\.domain\\.name");
+ cond1.setNocase(true);
+
+ RewriteCond cond2 = new RewriteCond();
+ cond2.setTestString("%{HTTP_HOST}");
+ cond2.setCondPattern("!^$");
+
+ RewriteCond cond3 = new RewriteCond();
+ cond3.setTestString("%{SERVER_PORT}");
+ cond3.setCondPattern("!^80$");
+
+ rule.addCondition(cond1);
+ rule.addCondition(cond2);
+ rule.addCondition(cond3);
+
+ for (int i = 0; i < rules.length; i++) {
+ rules[i].parse(null);
+ }
+
+ String result = rewriteUrl("/foo/bar", resolver, rules).toString();
+ assertEquals("http://fully.qualified.domain.name:server_variable_value[SERVER_PORT]/foo...", result);
+ }
+
+ public void testMovedDocumentRoot() {
+ Resolver resolver = new TestResolver();
+
+ RewriteRule rule = new RewriteRule();
+ rule.setPatternString("^/$");
+ rule.setSubstitutionString("/about/");
+
+ RewriteRule[] rules = new RewriteRule[1];
+ rules[0] = rule;
+ for (int i = 0; i < rules.length; i++) {
+ rules[i].parse(null);
+ }
+
+ String result = rewriteUrl("/", resolver, rules).toString();
+ assertEquals("/about/", result);
+ }
+
+ public void testParsing() {
+ Object result = null;
+ String test = null;
+ RewriteRule resultRule = null;
+ RewriteCond resultCond = null;
+
+ test = "RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]";
+ result = RewriteValve.parse(test);
+ if (result instanceof RewriteRule) {
+ resultRule = (RewriteRule) result;
+ }
+ assertNotNull(resultRule);
+ assertTrue(resultRule.isRedirect());
+ assertEquals(resultRule.getPatternString(), "^/~([^/]+)/?(.*)");
+ assertEquals(resultRule.getSubstitutionString(), "/u/$1/$2");
+ resultRule = null;
+
+ test = "RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]";
+ result = RewriteValve.parse(test);
+ if (result instanceof RewriteRule) {
+ resultRule = (RewriteRule) result;
+ }
+ assertNotNull(resultRule);
+ assertTrue(resultRule.isRedirect());
+ assertTrue(resultRule.isLast());
+ assertEquals(resultRule.getPatternString(), "^/(.*)");
+ assertEquals(resultRule.getSubstitutionString(), "http://fully.qualified.domain.name:%{SERVER_PORT}/$1");
+ resultRule = null;
+
+ test = "RewriteCond %{HTTP_HOST} !^fully\\.qualified\\.domain\\.name [NC]";
+ result = RewriteValve.parse(test);
+ if (result instanceof RewriteCond) {
+ resultCond = (RewriteCond) result;
+ }
+ assertNotNull(resultCond);
+ assertTrue(resultCond.isNocase());
+ assertEquals(resultCond.getTestString(), "%{HTTP_HOST}");
+ assertEquals(resultCond.getCondPattern(), "!^fully\\.qualified\\.domain\\.name");
+ resultCond = null;
+
+ }
+
+
+ public static CharSequence rewriteUrl(CharSequence url, Resolver resolver, RewriteRule[] rules) {
+ if (rules == null)
+ return url;
+ for (int i = 0; i < rules.length; i++) {
+ CharSequence newurl = rules[i].evaluate(url, resolver);
+ if (newurl != null) {
+ // Check some extra flags, including redirect, proxying, etc
+ // FIXME
+ url = newurl;
+ }
+ }
+ return url;
+ }
+
+}
16 years, 2 months
JBossWeb SVN: r831 - in trunk: java/org/apache/catalina/authenticator and 1 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-30 22:28:49 -0400 (Thu, 30 Oct 2008)
New Revision: 831
Modified:
trunk/build.properties.default
trunk/java/org/apache/catalina/authenticator/FormAuthenticator.java
trunk/webapps/docs/changelog.xml
Log:
- Port patch to restore query string encoding.
Modified: trunk/build.properties.default
===================================================================
--- trunk/build.properties.default 2008-10-30 14:26:53 UTC (rev 830)
+++ trunk/build.properties.default 2008-10-31 02:28:49 UTC (rev 831)
@@ -67,10 +67,10 @@
nsis.loc=${base-sf.loc}/nsis/nsis-2.40.zip
# ----- JBoss Native, version 2.0 or later -----
-jbossnative.home=${base.path}/jboss-native-2.0.4
+jbossnative.home=${base.path}/jboss-native-2.0.6
jbossnative.openssl=${jbossnative.home}/bin/META-INF/bin/windows/x86/openssl.exe
jbossnative.dlls=${jbossnative.home}/bin/META-INF/lib/windows/x86
-jbossnative.loc=http://www.jboss.org/downloading/?projectId=jbossweb&url=http://labs.jboss.com/file-access/default/members/jbossweb/freezone/dist/2.0.4.GA/jboss-native-2.0.4-windows-x86-ssl.zip
+jbossnative.loc=http://www.jboss.org/downloading/?projectId=jbossweb&url=http://labs.jboss.com/file-access/default/members/jbossweb/freezone/dist/2.0.6.GA/jboss-native-2.0.6-windows-x86-ssl.zip
# ----- Commons Daemon, version 1.0-Alpha or later -----
commons-daemon.home=${base.path}/commons-daemon-1.0.1
Modified: trunk/java/org/apache/catalina/authenticator/FormAuthenticator.java
===================================================================
--- trunk/java/org/apache/catalina/authenticator/FormAuthenticator.java 2008-10-30 14:26:53 UTC (rev 830)
+++ trunk/java/org/apache/catalina/authenticator/FormAuthenticator.java 2008-10-31 02:28:49 UTC (rev 831)
@@ -427,6 +427,8 @@
request.getCoyoteRequest().getParameters().recycle();
+ request.getCoyoteRequest().getParameters().setQueryStringEncoding(request.getConnector().getURIEncoding());
+
if ("POST".equalsIgnoreCase(saved.getMethod())) {
ByteChunk body = saved.getBody();
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-10-30 14:26:53 UTC (rev 830)
+++ trunk/webapps/docs/changelog.xml 2008-10-31 02:28:49 UTC (rev 831)
@@ -22,6 +22,9 @@
<update>
NSIS 2.40. (remm)
</update>
+ <update>
+ JBoss Native 2.0.6. (remm)
+ </update>
</changelog>
</subsection>
<subsection name="Catalina">
@@ -75,6 +78,9 @@
<bug>46085</bug>: Date handling in sessions should use int offsets, and longs can get
corrupted. (remm)
</fix>
+ <fix>
+ <bug>46105</bug>: Set query string URI encoding when replaying request. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
16 years, 2 months
JBossWeb SVN: r830 - trunk.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-30 10:26:53 -0400 (Thu, 30 Oct 2008)
New Revision: 830
Modified:
trunk/build.xml
Log:
- Only compile the Comet related classes.
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2008-10-30 12:09:10 UTC (rev 829)
+++ trunk/build.xml 2008-10-30 14:26:53 UTC (rev 830)
@@ -835,6 +835,8 @@
source="${compile.source}"
optimize="${compile.optimize}"
classpath="${tomcat.classes}">
+ <include name="org/jboss/web/comet/**" />
+ <include name="org/apache/cometd/**" />
</javac>
</target>
16 years, 2 months
JBossWeb SVN: r829 - trunk/java/org/apache/coyote/http11.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-10-30 08:09:10 -0400 (Thu, 30 Oct 2008)
New Revision: 829
Modified:
trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
Log:
- Event already does the recycledProcessors stuff.
Modified: trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
===================================================================
--- trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 2008-10-29 17:29:16 UTC (rev 828)
+++ trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 2008-10-30 12:09:10 UTC (rev 829)
@@ -605,8 +605,7 @@
proto.endpoint.getCometPoller().add(socket, processor.getCometTimeout(),
processor.getReadNotifications(), false, false);
}
- }
- if (state != SocketState.LONG) {
+ } else {
recycledProcessors.offer(processor);
}
return state;
16 years, 2 months