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);