dgaudet 97/06/26 19:20:21
Modified: src Tag: APACHE_1_2_X CHANGES mod_negotiation.c Log: PR#94: Content negot fails unless each varient has a charset Reviewed by: Dean, Alexei Submitted by: Paul Sutton Revision Changes Path No revision No revision 1.286.2.11 +4 -0 apache/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.286.2.10 retrieving revision 1.286.2.11 diff -C3 -r1.286.2.10 -r1.286.2.11 *** CHANGES 1997/06/27 02:15:05 1.286.2.10 --- CHANGES 1997/06/27 02:20:18 1.286.2.11 *************** *** 1,4 **** --- 1,8 ---- Changes with Apache 1.2.1 + + *) If an object has multiple variants that are otherwise equal Apache + would prefer the last listed variant rather than the first. + [Paul Sutton] PR#94 *) "HostnameLookups" now defaults to off because it is far better for the net if we require people that actually need this data to 1.40.2.1 +19 -11 apache/src/mod_negotiation.c Index: mod_negotiation.c =================================================================== RCS file: /export/home/cvs/apache/src/mod_negotiation.c,v retrieving revision 1.40 retrieving revision 1.40.2.1 diff -C3 -r1.40 -r1.40.2.1 *** mod_negotiation.c 1997/04/17 02:50:20 1.40 --- mod_negotiation.c 1997/06/27 02:20:19 1.40.2.1 *************** *** 642,658 **** return cp; } ! int read_type_map (negotiation_state *neg, char *map_name) { request_rec *r = neg->r; ! FILE *map = pfopen (neg->pool, map_name, "r"); ! char buffer[MAX_STRING_LEN]; enum header_state hstate; struct var_rec mime_info; if (map == NULL) { ! log_reason("cannot access type map file", map_name, r); return FORBIDDEN; } --- 642,661 ---- return cp; } ! static int read_type_map (negotiation_state *neg, request_rec *rr) { request_rec *r = neg->r; ! FILE *map; char buffer[MAX_STRING_LEN]; enum header_state hstate; struct var_rec mime_info; + if (rr->status != HTTP_OK) { + return rr->status; + } + map = pfopen (neg->pool, rr->filename, "r"); if (map == NULL) { ! log_reason("cannot access type map file", rr->filename, r); return FORBIDDEN; } *************** *** 780,786 **** closedir(dirp); neg->avail_vars->nelts = 0; ! return read_type_map (neg, sub_req->filename); } /* Have reasonable variant --- gather notes. --- 783,789 ---- closedir(dirp); neg->avail_vars->nelts = 0; ! return read_type_map (neg, sub_req); } /* Have reasonable variant --- gather notes. *************** *** 1439,1446 **** /* If the best variant's charset is ISO-8859-1 and this variant has the same charset quality, then we prefer this variant */ if (variant->charset_quality == best->charset_quality && ! (best->content_charset == NULL || *best->content_charset == 0 || ! strcmp(best->content_charset, "iso-8859-1") == 0)) { *p_bestq = q; return 1; } --- 1442,1452 ---- /* If the best variant's charset is ISO-8859-1 and this variant has the same charset quality, then we prefer this variant */ if (variant->charset_quality == best->charset_quality && ! (variant->content_charset != NULL && ! strcmp(variant->content_charset, "iso-8859-1") != 0) && ! (best->content_charset == NULL || ! *best->content_charset == '\0' || ! strcmp(best->content_charset, "iso-8859-1") == 0)) { *p_bestq = q; return 1; } *************** *** 1538,1546 **** /* If the best variant's charset is ISO-8859-1 and this variant has the same charset quality, then we prefer this variant */ if (variant->charset_quality > best->charset_quality || ! (variant->charset_quality == best->charset_quality && ! (best->content_charset == NULL || *best->content_charset == 0 || ! strcmp(best->content_charset, "iso-8859-1") == 0))) { *p_bestq = q; return 1; } --- 1544,1554 ---- /* If the best variant's charset is ISO-8859-1 and this variant has the same charset quality, then we prefer this variant */ if (variant->charset_quality > best->charset_quality || ! ((variant->content_charset != NULL && ! strcmp(variant->content_charset, "iso-8859-1") != 0) && ! (best->content_charset == NULL || ! *best->content_charset == '\0' || ! strcmp(best->content_charset, "iso-8859-1") == 0))) { *p_bestq = q; return 1; } *************** *** 1850,1856 **** char *udir; ! if ((res = read_type_map (neg, r->filename))) return res; maybe_add_default_encodings(neg, 0); --- 1858,1864 ---- char *udir; ! if ((res = read_type_map (neg, r))) return res; maybe_add_default_encodings(neg, 0);