Return-Path: Delivered-To: apmail-incubator-abdera-commits-archive@locus.apache.org Received: (qmail 32214 invoked from network); 7 Aug 2006 19:13:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 7 Aug 2006 19:13:07 -0000 Received: (qmail 15602 invoked by uid 500); 7 Aug 2006 19:13:07 -0000 Delivered-To: apmail-incubator-abdera-commits-archive@incubator.apache.org Received: (qmail 15592 invoked by uid 500); 7 Aug 2006 19:13:07 -0000 Mailing-List: contact abdera-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: abdera-dev@incubator.apache.org Delivered-To: mailing list abdera-commits@incubator.apache.org Received: (qmail 15583 invoked by uid 99); 7 Aug 2006 19:13:07 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Aug 2006 12:13:07 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Aug 2006 12:13:06 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id BF6711A981D; Mon, 7 Aug 2006 12:12:46 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r429437 - /incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/InMemoryCachedResponse.java Date: Mon, 07 Aug 2006 19:12:46 -0000 To: abdera-commits@incubator.apache.org From: jmsnell@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060807191246.BF6711A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: jmsnell Date: Mon Aug 7 12:12:45 2006 New Revision: 429437 URL: http://svn.apache.org/viewvc?rev=429437&view=rev Log: Filter out hop-by-hop headers from the cached response Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/InMemoryCachedResponse.java Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/InMemoryCachedResponse.java URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/InMemoryCachedResponse.java?rev=429437&r1=429436&r2=429437&view=diff ============================================================================== --- incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/InMemoryCachedResponse.java (original) +++ incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/InMemoryCachedResponse.java Mon Aug 7 12:12:45 2006 @@ -49,7 +49,8 @@ this.uri = response.getUri(); String[] headers = response.getHeaderNames(); for (String header : headers) { - if (!isNoCacheOrPrivate(header, response)) { + if (!isNoCacheOrPrivate(header, response) && + !isHopByHop(header)) { String[] values = response.getHeaders(header); List list = Arrays.asList(values); getHeaders().put(header, list); @@ -61,6 +62,23 @@ response.setInputStream(getInputStream()); } + /** + * We don't cache hop-by-hop headers + * TODO: There may actually be other hop-by-hop headers we need to filter + * out. They'll be listed in the Connection header. see Section 14.10 + * of RFC2616 (last paragraph) + */ + private boolean isHopByHop(String header) { + return (header.equalsIgnoreCase("Connection") || + header.equalsIgnoreCase("Keep-Alive") || + header.equalsIgnoreCase("Proxy-Authenticate") || + header.equalsIgnoreCase("Proxy-Authorization") || + header.equalsIgnoreCase("TE") || + header.equalsIgnoreCase("Trailers") || + header.equalsIgnoreCase("Transfer-Encoding") || + header.equalsIgnoreCase("Upgrade")); + } + /** * This is terribly inefficient, but it is an in-memory cache * that is being used by parsers that incrementally consume