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