From ea3281d658899fac951102334d07593f64bd530b Mon Sep 17 00:00:00 2001 From: Dan Costelloe Date: Mon, 11 Apr 2016 15:07:46 +0100 Subject: [PATCH] Fix 500 error caused by If-Modified-Since=0 HTTP header Prior to this commit a 500 error would be bubbled up to the user when the If-Modified-Since header was passed to the backend with a value of 0. In this fix, the zero value is explicitly handled (in same way as with a null value) by returning -1 to the caller. Issue: SPR-14144 --- .../main/java/org/springframework/http/HttpHeaders.java | 2 +- .../java/org/springframework/http/HttpHeadersTests.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index 53d0a5fba820..224d77821029 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -972,7 +972,7 @@ public List getVary() { */ public long getFirstDate(String headerName) { String headerValue = getFirst(headerName); - if (headerValue == null) { + if (headerValue == null || headerValue.equals("0")) { return -1; } for (String dateFormat : DATE_FORMATS) { diff --git a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java index d88038b904ef..5d8b955a75b7 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java @@ -234,6 +234,13 @@ public void ifModifiedSince() { headers.getFirst("if-modified-since")); } + // SPR-14144 + @Test + public void ifModifiedSinceHeaderIsZero() { + headers.set(HttpHeaders.IF_MODIFIED_SINCE, "0"); + assertEquals(-1, headers.getFirstDate(HttpHeaders.IF_MODIFIED_SINCE)); + } + @Test public void pragma() { String pragma = "no-cache";