akosut 97/02/19 17:23:25
Modified: src http_protocol.c Log: Add a check for MSIE 3 to send multipart/x-byteranges instead of byteranges. Remove quotes from the boundary string (MSIE has problems with them). Reviewed by: Paul, Jim, Ben Revision Changes Path 1.103 +17 -3 apache/src/http_protocol.c Index: http_protocol.c =================================================================== RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.102 retrieving revision 1.103 diff -C3 -r1.102 -r1.103 *** http_protocol.c 1997/02/18 14:41:29 1.102 --- http_protocol.c 1997/02/20 01:23:23 1.103 *************** *** 1053,1058 **** --- 1053,1073 ---- return OK; } + /* + * Here we try to be compatible with clients that want multipart/x-byteranges + * instead of multipart/byteranges (also see above), as per HTTP/1.1. We + * look for the Request-Range header (e.g. Netscape 2 and 3) as an indication + * that the browser supports an older protocol. We also check User-Agent + * for Microsoft Internet Explorer 3, which needs this as well. + */ + + static int use_range_x(request_rec *r) { + char *ua; + return (table_get(r->headers_in, "Request-Range") || + ((ua = table_get(r->headers_in, "User-Agent")) + && strstr(ua, "MSIE 3"))); + } + void send_http_header(request_rec *r) { conn_rec *c = r->connection; *************** *** 1083,1091 **** 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); --- 1098,1105 ---- if (r->byterange > 1) bvputs(fd, "Content-Type: multipart/", ! use_range_x(r) ? "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);