Author: markt Date: Tue Mar 2 16:02:25 2010 New Revision: 918093 URL: http://svn.apache.org/viewvc?rev=918093&view=rev Log: Better fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=48660 As per Konstantin's comments, ensure a single Vary header is used and take account of * if present
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=918093&r1=918092&r2=918093&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Tue Mar 2 16:02:25 2010 @@ -1660,7 +1660,17 @@ outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]); headers.setValue("Content-Encoding").setString("gzip"); // Make Proxies happy via Vary (from mod_deflate) - headers.addValue("Vary").setString("Accept-Encoding"); + MessageBytes vary = headers.getValue("Vary"); + if (vary == null) { + // Add a new Vary header + headers.setValue("Vary").setString("Accept-Encoding"); + } else if (vary.equals("*")) { + // No action required + } else { + // Merge into current header + headers.setValue("Vary").setString( + vary.getString() + ",Accept-Encoding"); + } } // Add date header Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=918093&r1=918092&r2=918093&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue Mar 2 16:02:25 2010 @@ -1159,7 +1159,17 @@ outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]); headers.setValue("Content-Encoding").setString("gzip"); // Make Proxies happy via Vary (from mod_deflate) - headers.addValue("Vary").setString("Accept-Encoding"); + MessageBytes vary = headers.getValue("Vary"); + if (vary == null) { + // Add a new Vary header + headers.setValue("Vary").setString("Accept-Encoding"); + } else if (vary.equals("*")) { + // No action required + } else { + // Merge into current header + headers.setValue("Vary").setString( + vary.getString() + ",Accept-Encoding"); + } } // Add date header Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=918093&r1=918092&r2=918093&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Tue Mar 2 16:02:25 2010 @@ -815,7 +815,17 @@ outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]); headers.setValue("Content-Encoding").setString("gzip"); // Make Proxies happy via Vary (from mod_deflate) - headers.addValue("Vary").setString("Accept-Encoding"); + MessageBytes vary = headers.getValue("Vary"); + if (vary == null) { + // Add a new Vary header + headers.setValue("Vary").setString("Accept-Encoding"); + } else if (vary.equals("*")) { + // No action required + } else { + // Merge into current header + headers.setValue("Vary").setString( + vary.getString() + ",Accept-Encoding"); + } } // Add date header --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org