fielding 97/05/12 21:01:51
Modified: src CHANGES mod_dir.c Log: If the lookup for a DirectoryIndex name with content negotiation has found matching variants, but none are acceptable, return the negotiation result if there are no more DirectoryIndex names to lookup. Submitted by: Petr Lampa and Roy Fielding Reviewed by: Randy Terbush, Dean Gaudet Revision Changes Path 1.274 +5 -0 apache/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.273 retrieving revision 1.274 diff -C3 -r1.273 -r1.274 *** CHANGES 1997/05/13 03:44:22 1.273 --- CHANGES 1997/05/13 04:01:49 1.274 *************** *** 1,5 **** --- 1,10 ---- Changes with Apache 1.2 + *) If the lookup for a DirectoryIndex name with content negotiation + has found matching variants, but none are acceptable, return the + negotiation result if there are no more DirectoryIndex names lookup. + [Petr Lampa and Roy Fielding] + *) If a soft_timeout occurs after keepalive is set, then the main child loop would try to read another request even though the connection has been aborted. [Roy Fielding] 1.26 +5 -3 apache/src/mod_dir.c Index: mod_dir.c =================================================================== RCS file: /export/home/cvs/apache/src/mod_dir.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C3 -r1.25 -r1.26 *** mod_dir.c 1997/04/18 02:56:14 1.25 --- mod_dir.c 1997/05/13 04:01:50 1.26 *************** *** 807,813 **** char *name_ptr = getword_conf (r->pool, &names_ptr); request_rec *rr = sub_req_lookup_uri (name_ptr, r); ! if (rr->status == 200 && rr->finfo.st_mode != 0) { char* new_uri = escape_uri(r->pool, rr->uri); if (rr->args != NULL) --- 807,813 ---- char *name_ptr = getword_conf (r->pool, &names_ptr); request_rec *rr = sub_req_lookup_uri (name_ptr, r); ! if (rr->status == HTTP_OK && rr->finfo.st_mode != 0) { char* new_uri = escape_uri(r->pool, rr->uri); if (rr->args != NULL) *************** *** 822,828 **** /* If the request returned a redirect, propagate it to the client */ ! if (is_HTTP_REDIRECT(rr->status)) { error_notfound = rr->status; r->notes = overlay_tables(r->pool, r->notes, rr->notes); r->headers_out = overlay_tables(r->pool, r->headers_out, --- 822,830 ---- /* If the request returned a redirect, propagate it to the client */ ! if (is_HTTP_REDIRECT(rr->status) || ! (rr->status == HTTP_NOT_ACCEPTABLE && *names_ptr == '\0')) { ! error_notfound = rr->status; r->notes = overlay_tables(r->pool, r->notes, rr->notes); r->headers_out = overlay_tables(r->pool, r->headers_out, *************** *** 842,848 **** * exist, we return the last error response we got, instead * of a directory listing. */ ! if (rr->status && rr->status != 404 && rr->status != 200) error_notfound = rr->status; destroy_sub_req (rr); --- 844,850 ---- * exist, we return the last error response we got, instead * of a directory listing. */ ! if (rr->status && rr->status != HTTP_NOT_FOUND && rr->status != HTTP_OK) error_notfound = rr->status; destroy_sub_req (rr);