From 3231318dc6d7bc4f43aeab5b38d683f16af17875 Mon Sep 17 00:00:00 2001 From: billbarker Date: Sat, 24 Nov 2007 01:37:36 +0000 Subject: [PATCH] Remove conditional headers from the re-played request. These confuse some UAs (notably FireFox), and we can't really keep them from the HTTP/1.1 spec. Fix for bug #43687 Reported By: Przemyslaw Madzik git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@597781 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/catalina/authenticator/FormAuthenticator.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java b/java/org/apache/catalina/authenticator/FormAuthenticator.java index 62bf5eee9..3da730f73 100644 --- a/java/org/apache/catalina/authenticator/FormAuthenticator.java +++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java @@ -402,12 +402,20 @@ public class FormAuthenticator MimeHeaders rmh = request.getCoyoteRequest().getMimeHeaders(); rmh.recycle(); + boolean cachable = "GET".equalsIgnoreCase(saved.getMethod()) || + "HEAD".equalsIgnoreCase(saved.getMethod()); Iterator names = saved.getHeaderNames(); while (names.hasNext()) { String name = (String) names.next(); - Iterator values = saved.getHeaderValues(name); - while (values.hasNext()) { - rmh.addValue(name).setString( (String)values.next() ); + // The browser isn't expecting this conditional reposponse now. + // Assuming that it can quietly recover from an unexpected 412. + // BZ 43687 + if(!("If-Modified-Since".equalsIgnoreCase(name) || + (cachable && "If-None-Match".equalsIgnoreCase(name)))) { + Iterator values = saved.getHeaderValues(name); + while (values.hasNext()) { + rmh.addValue(name).setString( (String)values.next() ); + } } } -- 2.11.0