Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2014-11-20 04:33:22 +0000
committerGreg Wilkins2014-11-20 04:33:22 +0000
commit1915e592b587dd13e2c2083c4702ad77bba9f0e1 (patch)
treec8a6988061dd9e5875b3fed1fb61c4e00dc06cef /jetty-server
parent46a5ef861d90f6ce4ceeed83adc8d26814855891 (diff)
downloadorg.eclipse.jetty.project-1915e592b587dd13e2c2083c4702ad77bba9f0e1.tar.gz
org.eclipse.jetty.project-1915e592b587dd13e2c2083c4702ad77bba9f0e1.tar.xz
org.eclipse.jetty.project-1915e592b587dd13e2c2083c4702ad77bba9f0e1.zip
452424 Do not add Date header if already set
Diffstat (limited to 'jetty-server')
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java9
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java3
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java29
3 files changed, 37 insertions, 4 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
index 9499cf7f19..5d563264cf 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
@@ -656,19 +656,20 @@ public class HttpChannel<T> implements HttpParser.RequestHandler<T>, Runnable, H
public boolean headerComplete()
{
_requests.incrementAndGet();
+ HttpFields fields = _response.getHttpFields();
switch (_version)
{
case HTTP_0_9:
break;
case HTTP_1_0:
- if (_configuration.getSendDateHeader())
- _response.getHttpFields().put(_connector.getServer().getDateField());
+ if (_configuration.getSendDateHeader() && !fields.contains(HttpHeader.DATE))
+ _response.getHttpFields().add(_connector.getServer().getDateField());
break;
case HTTP_1_1:
- if (_configuration.getSendDateHeader())
- _response.getHttpFields().put(_connector.getServer().getDateField());
+ if (_configuration.getSendDateHeader() && !fields.contains(HttpHeader.DATE))
+ _response.getHttpFields().add(_connector.getServer().getDateField());
if (_expect)
{
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java b/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java
index 36e91052fd..3ac0f35ccd 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java
@@ -81,6 +81,9 @@ public class DumpHandler extends AbstractHandler
read.append((char)in.read());
}
+ if (request.getParameter("date")!=null)
+ response.setHeader("Date",request.getParameter("date"));
+
if (request.getParameter("ISE")!=null)
{
throw new IllegalStateException("Testing ISE");
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java
index dceed4900d..ce2cac2cad 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java
@@ -73,6 +73,7 @@ public class HttpConnectionTest
connector = new LocalConnector(server,http,null);
connector.setIdleTimeout(5000);
+ connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setSendDateHeader(true);
server.addConnector(connector);
server.setHandler(new DumpHandler());
ErrorHandler eh=new ErrorHandler();
@@ -147,6 +148,34 @@ public class HttpConnectionTest
}
@Test
+ public void testDate() throws Exception
+ {
+ String response=connector.getResponses("GET / HTTP/1.1\n"+
+ "Host: localhost:80\n"+
+ "Connection: close\n"+
+ "\n");
+
+ int offset=0;
+ offset = checkContains(response,offset,"HTTP/1.1 200");
+ offset = checkContains(response,offset,"Date: ");
+ checkContains(response,offset,"pathInfo=/");
+ }
+
+ @Test
+ public void testSetDate() throws Exception
+ {
+ String response=connector.getResponses("GET /?date=1+Jan+1970 HTTP/1.1\n"+
+ "Host: localhost:80\n"+
+ "Connection: close\n"+
+ "\n");
+
+ int offset=0;
+ offset = checkContains(response,offset,"HTTP/1.1 200");
+ offset = checkContains(response,offset,"Date: 1 Jan 1970");
+ checkContains(response,offset,"pathInfo=/");
+ }
+
+ @Test
public void testBadNoPath() throws Exception
{
String response=connector.getResponses("GET http://localhost:80/../cheat HTTP/1.1\n"+

Back to the top