Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2010-12-02 14:36:13 +0000
committerGreg Wilkins2010-12-02 14:36:13 +0000
commit793a646e91e2867c35836c7f164f7520b8b3f449 (patch)
tree1f610d6427564b2b896d3d7d38f9e0b6da6a9c9b
parente4f078cec6b22af21fda0d258d0c903a7a8cfa5e (diff)
downloadorg.eclipse.jetty.project-793a646e91e2867c35836c7f164f7520b8b3f449.tar.gz
org.eclipse.jetty.project-793a646e91e2867c35836c7f164f7520b8b3f449.tar.xz
org.eclipse.jetty.project-793a646e91e2867c35836c7f164f7520b8b3f449.zip
331461 Fixed idle timeout for unflushed HTTP/1.0
git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@2574 7e9141cc-0065-0410-87d8-b60c137991c4
-rw-r--r--VERSION.txt1
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java2
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java5
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java1
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java33
5 files changed, 36 insertions, 6 deletions
diff --git a/VERSION.txt b/VERSION.txt
index 3466aebd0f..69fcb44d8e 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,6 +1,7 @@
+ 331567 IPAccessHandlerTest failed on MacOS fix
+ 328789 Clean up tmp files from test harnesses
+ 331230 Fixed low thread warnings when acceptors>threadpool
+ + 331461 Fixed idle timeout for unflushed HTTP/1.0
jetty-7.2.2.v20101201 1 December 2010
+ 330210 Improve performance of writing large bytes arrays
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java b/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java
index 14e2ffd537..ced46568bb 100644
--- a/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java
+++ b/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java
@@ -232,9 +232,7 @@ public class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPo
public void checkIdleTimestamp(long now)
{
if (_idleTimestamp!=0 && _maxIdleTime!=0 && now>(_idleTimestamp+_maxIdleTime))
- {
idleExpired();
- }
}
/* ------------------------------------------------------------ */
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
index 98ffca67e0..f659d0258e 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
@@ -665,9 +665,6 @@ public class HttpConnection implements Connection
if(_endp.isOpen())
{
- if (_generator.isPersistent())
- _connector.persist(_endp);
-
if (error)
_endp.close();
else
@@ -675,6 +672,8 @@ public class HttpConnection implements Connection
if (!_response.isCommitted() && !_request.isHandled())
_response.sendError(HttpServletResponse.SC_NOT_FOUND);
_response.complete();
+ if (_generator.isPersistent())
+ _connector.persist(_endp);
}
}
else
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java
index ba0e3e99c2..173b7bef90 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java
@@ -112,6 +112,7 @@ public class SelectChannelConnector extends AbstractNIOConnector
*/
public SelectChannelConnector()
{
+ _manager.setMaxIdleTime(getMaxIdleTime());
}
/* ------------------------------------------------------------ */
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java
index e5bb109b8f..61d045acf7 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java
@@ -37,7 +37,38 @@ public abstract class ConnectorTimeoutTest extends HttpServerTestFixture
@Test
- public void testSelectConnectorMaxIdleWithRequest() throws Exception
+ public void testSelectConnectorMaxIdleWithRequest10() throws Exception
+ {
+ configureServer(new HelloWorldHandler());
+ Socket client=newSocket(HOST,_connector.getLocalPort());
+ client.setSoTimeout(10000);
+
+ assertFalse(client.isClosed());
+
+ OutputStream os=client.getOutputStream();
+ InputStream is=client.getInputStream();
+
+ String content="Wibble";
+ byte[] contentB=content.getBytes("utf-8");
+ os.write((
+ "GET / HTTP/1.0\r\n"+
+ "host: "+HOST+":"+_connector.getLocalPort()+"\r\n"+
+ "connection: keep-alive\r\n"+
+ "\r\n").getBytes("utf-8"));
+ os.flush();
+
+ long start = System.currentTimeMillis();
+ String in = IO.toString(is);
+
+ Thread.sleep(300);
+ assertEquals(-1, is.read());
+
+ Assert.assertTrue(System.currentTimeMillis()-start>200);
+ Assert.assertTrue(System.currentTimeMillis()-start<5000);
+ }
+
+ @Test
+ public void testSelectConnectorMaxIdleWithRequest11() throws Exception
{
configureServer(new EchoHandler());
Socket client=newSocket(HOST,_connector.getLocalPort());

Back to the top