You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Tom Tromey <tr...@creche.cygnus.com> on 1996/10/01 22:03:16 UTC
Re: CGI-related core
> * I didn't understand why response_titles and status_lines were
> separate. I unified them.
Robert> The titles of a few common generated error response bodies are
Robert> chosen to be more meaningful to end users than the standard
Robert> suggested error texts
Ok. But I doubt it is really important to use the precise text from
the HTTP spec in the status messages; my evidence for this is that
Apache currently diverges from the standard (eg in the standard 302 is
"Moved Temporarily" but Apache has "Found).
So in my local copy I replaced the text in status_lines with the more
user-friendly text. I also got rid of the RESPONSE_CODE_LIST define,
as it is redundant and a pain to update.
Once again, the patch is appended.
Tom
--
tromey@cygnus.com Member, League for Programming Freedom
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.51
diff -c -5 -r1.51 http_protocol.c
*** http_protocol.c 1996/09/30 05:56:25 1.51
--- http_protocol.c 1996/10/01 19:57:55
***************
*** 789,865 ****
*pw = t;
return OK;
}
- #define RESPONSE_CODE_LIST " 200 206 300 301 302 304 400 401 403 404 405 406 411 412 500 503 501 502 506"
-
/* New Apache routine to map error responses into array indicies
* e.g. 400 -> 0, 500 -> 1, 502 -> 2 ...
* the indicies have no significance
*/
! char *status_lines[] = {
"200 OK",
"206 Partial Content",
"300 Multiple Choices",
! "301 Moved Permanently",
! "302 Found",
"304 Not Modified",
"400 Bad Request",
! "401 Unauthorized",
"403 Forbidden",
! "404 Not found",
"405 Method Not Allowed",
"406 Not Acceptable",
"411 Length Required",
"412 Precondition Failed",
"500 Server error",
! "503 Out of resources",
! "501 Not Implemented",
"502 Bad Gateway",
"506 Variant Also Varies"
};
- char *response_titles[] = {
- "200 OK", /* Never actually sent, barring die(200,...) */
- "206 Partial Content", /* Never sent as an error (we hope) */
- "Multiple Choices", /* 300 Multiple Choices */
- "Document moved", /* 301 Redirect */
- "Document moved", /* 302 Redirect */
- "304 Not Modified", /* Never sent... 304 MUST be header only */
- "Bad Request",
- "Authorization Required",
- "Forbidden",
- "File Not found",
- "Method Not Allowed",
- "Not Acceptable",
- "Length Required",
- "Precondition Failed",
- "Server Error",
- "Out of resources",
- "Method not implemented",
- "Bad Gateway",
- "Variant Also Varies"
- };
-
int index_of_response(int err_no) {
! char *cptr, err_string[10];
! static char *response_codes = RESPONSE_CODE_LIST;
int index_number;
!
sprintf(err_string,"%3d",err_no);
!
! cptr = response_codes;
! cptr++;
! index_number = 0;
! while (*cptr && strncmp(cptr, err_string, 3)) {
! cptr += 4;
! index_number++;
}
! if (!*cptr) return -1;
! return index_number;
}
void basic_http_header (request_rec *r)
{
--- 789,856 ----
*pw = t;
return OK;
}
/* New Apache routine to map error responses into array indicies
* e.g. 400 -> 0, 500 -> 1, 502 -> 2 ...
* the indicies have no significance
*/
! static char *status_lines[] = {
! "100 Continue",
! "101 Switching Protocols",
"200 OK",
+ "201 Created",
+ "202 Accepted",
+ "203 Non-Authoritative Information",
+ "204 No Content",
+ "205 Reset Content",
"206 Partial Content",
"300 Multiple Choices",
! "301 Document Moved Permanently",
! "302 Document Moved Temporarily",
! "303 See Other",
"304 Not Modified",
+ "305 Use Proxy",
"400 Bad Request",
! "401 Authorization Required",
! "402 Payment Required",
"403 Forbidden",
! "404 File Not Found",
"405 Method Not Allowed",
"406 Not Acceptable",
+ "407 Proxy Authentication Required",
+ "408 Request Time-out",
+ "409 Conflict",
+ "410 Gone",
"411 Length Required",
"412 Precondition Failed",
+ "413 Request Entity Too Large",
+ "414 Request-URI Too Large",
+ "415 Unsupported Media Type",
"500 Server error",
! "501 Method Not Implemented",
"502 Bad Gateway",
+ "503 Out of resources",
+ "504 Gateway Time-out",
+ "505 HTTP Version not supported",
"506 Variant Also Varies"
};
int index_of_response(int err_no) {
! char err_string[10];
int index_number;
!
sprintf(err_string,"%3d",err_no);
!
! for (index_number = 0; index_number < RESPONSE_CODES; ++index_number) {
! if (!strncmp(status_lines[index_number], err_string, 3)) {
! return index_number;
! }
}
! return -1;
}
void basic_http_header (request_rec *r)
{
***************
*** 1325,1335 ****
*/
while (r->prev && r->prev->status != 200)
r = r->prev;
}
{
! char *title = response_titles[idx];
BUFF *fd = c->client;
bvputs(fd,"<HEAD><TITLE>", title, "</TITLE></HEAD>\n<BODY><H1>", title,
"</H1>\n", NULL);
--- 1316,1327 ----
*/
while (r->prev && r->prev->status != 200)
r = r->prev;
}
{
! /* Magic number "4" is length of a response code and a space. */
! char *title = status_lines[idx] + 4;
BUFF *fd = c->client;
bvputs(fd,"<HEAD><TITLE>", title, "</TITLE></HEAD>\n<BODY><H1>", title,
"</H1>\n", NULL);
Index: httpd.h
===================================================================
RCS file: /export/home/cvs/apache/src/httpd.h,v
retrieving revision 1.51
diff -c -5 -r1.51 httpd.h
*** httpd.h 1996/09/30 05:56:26 1.51
--- httpd.h 1996/10/01 19:58:31
***************
*** 270,280 ****
#define SERVER_ERROR 500
#define NOT_IMPLEMENTED 501
#define BAD_GATEWAY 502
#define HTTP_SERVICE_UNAVAILABLE 503
#define VARIANT_ALSO_VARIES 506
! #define RESPONSE_CODES 18
#define METHODS 8
#define M_GET 0
#define M_PUT 1
#define M_POST 2
--- 270,280 ----
#define SERVER_ERROR 500
#define NOT_IMPLEMENTED 501
#define BAD_GATEWAY 502
#define HTTP_SERVICE_UNAVAILABLE 503
#define VARIANT_ALSO_VARIES 506
! #define RESPONSE_CODES 38
#define METHODS 8
#define M_GET 0
#define M_PUT 1
#define M_POST 2