Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_core.c,v
retrieving revision 1.90
diff -u -r1.90 http_core.c
--- http_core.c	1997/06/30 22:50:39	1.90
+++ http_core.c	1997/07/03 06:58:36
@@ -1392,6 +1392,30 @@
       table_set (r->headers_out, "Content-MD5", md5digest(r->pool, f));
     }
 
+    /* Shameless hack: if the file to be sent is image/gif and 
+     * gif89-expires-hack is set then remove the Expires header.
+     * This is required because of a bug in Mozilla 3.0 which causes it
+     * to re-request the animation every loop.  You probably want this
+     * in your config:
+     *
+     * BrowserMatch Mozilla/3\. gif89-expires-hack
+     *
+     * -djg
+     */
+    if (r->content_type
+	&& strcasecmp (r->content_type, "image/gif") == 0
+	&& table_get (r->subprocess_env, "gif89-expires-hack")) {
+#define GIF_HEADER_LEN	(6)
+	char gif_header[ GIF_HEADER_LEN ];
+
+	if (fread (gif_header, 1, GIF_HEADER_LEN, f) == GIF_HEADER_LEN
+	    && memcmp (gif_header, "GIF89a", GIF_HEADER_LEN) == 0) {
+	    table_unset (r->headers_out, "Expires");
+	}
+	fseek (f, 0L, SEEK_SET);
+#undef GIF_HEADER_LEN
+    }
+
     rangestatus = set_byterange(r);
     send_http_header (r);
     
