Author: ddumont
Date: Thu Sep 13 14:01:10 2012
New Revision: 1384338

URL: http://svn.apache.org/viewvc?rev=1384338&view=rev
Log:
SHINDIG-1831 - IE8 file download failed when retrieving content through proxy
Committed for Marshall Shi

Modified:
    
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java

Modified: 
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java?rev=1384338&r1=1384337&r2=1384338&view=diff
==============================================================================
--- 
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java
 (original)
+++ 
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java
 Thu Sep 13 14:01:10 2012
@@ -107,13 +107,17 @@ public final class HttpUtil {
   }
 
   public static List<Pair<String, String>> getCachingHeadersToSet(int ttl, 
boolean noProxy) {
+    return getCachingHeadersToSet(ttl, null, null, noProxy);
+  }
+
+  public static List<Pair<String, String>> getCachingHeadersToSet(int ttl, 
String cacheControl, String pragma, boolean noProxy) {
     List<Pair<String, String>> cachingHeaders = 
Lists.newArrayListWithExpectedSize(3);
     cachingHeaders.add(Pair.of("Expires",
         DateUtil.formatRfc1123Date(timeSource.currentTimeMillis() + (1000L * 
ttl))));
 
     if (ttl <= 0) {
-      cachingHeaders.add(Pair.of("Pragma", "no-cache"));
-      cachingHeaders.add(Pair.of("Cache-Control", "no-cache"));
+      cachingHeaders.add(Pair.of("Pragma", pragma == null ? "no-cache" : 
pragma));
+      cachingHeaders.add(Pair.of("Cache-Control", cacheControl == null ? 
"no-cache" : cacheControl));
     } else {
       if (noProxy) {
         cachingHeaders.add(Pair.of("Cache-Control", "private,max-age=" + 
Integer.toString(ttl)));

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java?rev=1384338&r1=1384337&r2=1384338&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
 Thu Sep 13 14:01:10 2012
@@ -90,7 +90,10 @@ public final class ServletUtil {
   }
 
   public static void setCachingHeaders(HttpResponseBuilder response, int ttl, 
boolean noProxy) {
-    for (Pair<String, String> header : HttpUtil.getCachingHeadersToSet(ttl, 
noProxy)) {
+    // Initial cache control headers are in this response, we should now 
sanitize them or set them if they are missing.
+    String cacheControl = response.getHeader("Cache-Control");
+    String pragma = response.getHeader("Pragma");
+    for (Pair<String, String> header : HttpUtil.getCachingHeadersToSet(ttl, 
cacheControl, pragma, noProxy)) {
       response.setHeader(header.one, header.two);
     }
   }


Reply via email to