akosut 96/08/15 12:22:41
Modified: src http_protocol.c httpd.h mod_negotiation.c
Log:
Send 406 instead of 404 response when an acceptable variant is not
found.
Revision Changes Path
1.36 +8 -1 apache/src/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -C3 -r1.35 -r1.36
*** http_protocol.c 1996/08/07 01:27:57 1.35
--- http_protocol.c 1996/08/15 19:22:34 1.36
***************
*** 760,766 ****
return OK;
}
! #define RESPONSE_CODE_LIST " 200 206 301 302 304 400 401 403 404 405 411
412 500 503 501 502 "
/* New Apache routine to map error responses into array indicies
* e.g. 400 -> 0, 500 -> 1, 502 -> 2 ...
--- 760,766 ----
return OK;
}
! #define RESPONSE_CODE_LIST " 200 206 301 302 304 400 401 403 404 405 406
411 412 500 503 501 502 "
/* New Apache routine to map error responses into array indicies
* e.g. 400 -> 0, 500 -> 1, 502 -> 2 ...
***************
*** 778,783 ****
--- 778,784 ----
"403 Forbidden",
"404 Not found",
"405 Method Not Allowed",
+ "406 Not Acceptable",
"411 Length Required",
"412 Precondition Failed",
"500 Server error",
***************
*** 797,802 ****
--- 798,804 ----
"Forbidden",
"File Not found",
"Method Not Allowed",
+ "Not Acceptable",
"Length Required",
"Precondition Failed",
"Server Error",
***************
*** 1328,1333 ****
--- 1330,1340 ----
bvputs(fd, "The requested method ", r->method, " is not allowed "
"for the URL ", escape_html(r->pool, r->uri),
".<P>\n", NULL);
+ break;
+ case NOT_ACCEPTABLE:
+ bvputs(fd, "An appropriate variant to the requested entity ",
+ escape_html(r->pool, r->uri), " could not be found "
+ "on this server.<P>\n", NULL);
break;
case LENGTH_REQUIRED:
bvputs(fd, "A request of the requested method ", r->method,
1.45 +2 -1 apache/src/httpd.h
Index: httpd.h
===================================================================
RCS file: /export/home/cvs/apache/src/httpd.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -C3 -r1.44 -r1.45
*** httpd.h 1996/08/07 01:27:58 1.44
--- httpd.h 1996/08/15 19:22:37 1.45
***************
*** 263,275 ****
#define FORBIDDEN 403
#define NOT_FOUND 404
#define METHOD_NOT_ALLOWED 405
#define LENGTH_REQUIRED 411
#define PRECONDITION_FAILED 412
#define SERVER_ERROR 500
#define NOT_IMPLEMENTED 501
#define BAD_GATEWAY 502
#define HTTP_SERVICE_UNAVAILABLE 503
! #define RESPONSE_CODES 15
#define METHODS 8
#define M_GET 0
--- 263,276 ----
#define FORBIDDEN 403
#define NOT_FOUND 404
#define METHOD_NOT_ALLOWED 405
+ #define NOT_ACCEPTABLE 406
#define LENGTH_REQUIRED 411
#define PRECONDITION_FAILED 412
#define SERVER_ERROR 500
#define NOT_IMPLEMENTED 501
#define BAD_GATEWAY 502
#define HTTP_SERVICE_UNAVAILABLE 503
! #define RESPONSE_CODES 16
#define METHODS 8
#define M_GET 0
1.13 +2 -10 apache/src/mod_negotiation.c
Index: mod_negotiation.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_negotiation.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C3 -r1.12 -r1.13
*** mod_negotiation.c 1996/08/15 18:36:42 1.12
--- mod_negotiation.c 1996/08/15 19:22:38 1.13
***************
*** 127,138 ****
{ NULL }
};
- /*
- * TO DO --- error code 406. Unfortunately, the specification for
- * a 406 reply in the current draft standard is unworkable;
- * we return 404 for these pending a workable spec.
- */
-
/* Record of available info on a media type specified by the client
* (we also use 'em for encodings and languages)
*/
--- 127,132 ----
***************
*** 1079,1087 ****
maybe_add_default_encodings(neg, 0);
if (!(best = best_match(neg))) {
- /* Should be a 406 */
log_reason ("no acceptable variant", r->filename, r);
! return NOT_FOUND;
}
/* Make sure caching works - Vary should handle HTTP/1.1, but for
--- 1073,1080 ----
maybe_add_default_encodings(neg, 0);
if (!(best = best_match(neg))) {
log_reason ("no acceptable variant", r->filename, r);
! return NOT_ACCEPTABLE;
}
/* Make sure caching works - Vary should handle HTTP/1.1, but for
***************
*** 1121,1129 ****
if (neg->avail_vars->nelts == 0) return DECLINED;
if (!(best = best_match(neg))) {
- /* Should be a 406 */
log_reason ("no acceptable variant", r->filename, r);
! return NOT_FOUND;
}
if (! (sub_req = best->sub_req)) {
--- 1114,1121 ----
if (neg->avail_vars->nelts == 0) return DECLINED;
if (!(best = best_match(neg))) {
log_reason ("no acceptable variant", r->filename, r);
! return NOT_ACCEPTABLE;
}
if (! (sub_req = best->sub_req)) {