akosut 97/02/06 13:40:38
Modified: src CHANGES http_protocol.c
Log:
Tweak byteserving code to work around a bug in Netscape Navigator that causes
it to only recognize multipart/x-byteranges, not multipart/byteranges (as per
HTTP/1.1).
Reviewed by: Dean Gaudet, Jim Jagielski
Revision Changes Path
1.145 +3 -0 apache/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.144
retrieving revision 1.145
diff -C3 -r1.144 -r1.145
*** CHANGES 1997/02/04 23:57:23 1.144
--- CHANGES 1997/02/06 21:40:34 1.145
***************
*** 1,5 ****
--- 1,8 ----
Changes with Apache 1.2b7
+ *) Tweak byteserving code (e.g. serving PDF files) to work around a
+ bug in Netscape Navigator. [Alexei Kosut]
+
*) Port to HP MPE operating system for HP 3000 machines
[Mark Bixby <[EMAIL PROTECTED]>]
1.98 +15 -2 apache/src/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -C3 -r1.97 -r1.98
*** http_protocol.c 1997/01/30 03:46:13 1.97
--- http_protocol.c 1997/02/06 21:40:35 1.98
***************
*** 113,118 ****
--- 113,129 ----
char ts[MAX_STRING_LEN], *match;
long range_start, range_end;
+ /* Also check, for backwards-compatibility with second-draft
+ * Luotonen/Franks byte-ranges (e.g. Netscape Navigator 2-3)
+ *
+ * We support this form, with Request-Range, and (farther down) we
+ * send multipart/x-byteranges instead of multipart/byteranges for
+ * Request-Range based requests to work around a bug in Netscape
+ * Navigator 2 and 3.
+ */
+
+ if (!range) range = table_get (r->headers_in, "Request-Range");
+
/* Reasons we won't do ranges... */
if (!r->clength || r->assbackwards) return 0;
***************
*** 1032,1039 ****
bputs("Transfer-Encoding: chunked\015\012", fd);
if (r->byterange > 1)
! bvputs(fd, "Content-Type: multipart/byteranges; boundary=\"",
! r->boundary, "\"\015\012", NULL);
else if (r->content_type)
bvputs(fd, "Content-Type: ",
nuke_mime_parms (r->pool, r->content_type), "\015\012", NULL);
--- 1043,1052 ----
bputs("Transfer-Encoding: chunked\015\012", fd);
if (r->byterange > 1)
! bvputs(fd, "Content-Type: multipart/",
! table_get(r->headers_in, "Request-Range") ?
! "x-byteranges" : "byteranges",
! "; boundary=\"", r->boundary, "\"\015\012", NULL);
else if (r->content_type)
bvputs(fd, "Content-Type: ",
nuke_mime_parms (r->pool, r->content_type), "\015\012", NULL);