You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Dean Gaudet <dg...@arctic.org> on 1997/09/23 00:22:56 UTC

[PATCH] PR#1133: workaround ETag in mod_include for 1.2.5

We've already solved this properly in 1.3.  For 1.2.5 here is a workaround
that removes the ETag header from mod_include output when XBitHack Full is
set.  Note that since set_last_modified does the conditional get
negotiation it's possible that a request from a client with an old
response (pre-this patch) can get a use_local_copy response due to ETags. 
But I don't think this is worth worrying about. 

Dean

Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.286.2.54
diff -u -r1.286.2.54 CHANGES
--- CHANGES	1997/09/22 21:58:49	1.286.2.54
+++ CHANGES	1997/09/22 22:18:53
@@ -1,5 +1,10 @@
 Changes with Apache 1.2.5
 
+  *) mod_include when using XBitHack Full would send ETags in addition to
+     sending Last-Modifieds.  This is incorrect HTTP/1.1 behaviour.  A
+     workaround has been applied to 1.2.5, a more full solution will appear
+     in 1.3.  [Dean Gaudet] PR#1133
+
   *) Inetd mode (which is buggy) uses timeouts without having setup the
      jmpbuffer. [Dean Gaudet] PR#1064
 
Index: mod_include.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_include.c,v
retrieving revision 1.33.2.5
diff -u -r1.33.2.5 mod_include.c
--- mod_include.c	1997/07/31 08:50:02	1.33.2.5
+++ mod_include.c	1997/09/22 22:18:55
@@ -1815,8 +1815,13 @@
     /*  OS/2 dosen't support Groups. */
 	&& (r->finfo.st_mode & S_IXGRP)
 #endif
-	&& (errstatus = set_last_modified (r, r->finfo.st_mtime)))
-        return errstatus;
+	) {
+	errstatus = set_last_modified (r, r->finfo.st_mtime);
+	table_unset(r->headers_out, "ETag");
+	if (errstatus) {
+	    return errstatus;
+	}
+    }
 
     send_http_header(r);