mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 04:45:45 +00:00
bug 950910 - http default reason phrases r=hurley
This commit is contained in:
parent
4a4d82fa4b
commit
8c3362ee64
@ -129,6 +129,151 @@ nsHttpResponseHead::Parse(char *block)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nsHttpResponseHead::AssignDefaultStatusText()
|
||||||
|
{
|
||||||
|
LOG(("response status line needs default reason phrase\n"));
|
||||||
|
|
||||||
|
// if a http response doesn't contain a reason phrase, put one in based
|
||||||
|
// on the status code. The reason phrase is totally meaningless so its
|
||||||
|
// ok to have a default catch all here - but this makes debuggers and addons
|
||||||
|
// a little saner to use if we don't map things to "404 OK" or other nonsense.
|
||||||
|
// In particular, HTTP/2 does not use reason phrases at all so they need to
|
||||||
|
// always be injected.
|
||||||
|
|
||||||
|
switch (mStatus) {
|
||||||
|
// start with the most common
|
||||||
|
case 200:
|
||||||
|
mStatusText.AssignLiteral("OK");
|
||||||
|
break;
|
||||||
|
case 404:
|
||||||
|
mStatusText.AssignLiteral("Not Found");
|
||||||
|
break;
|
||||||
|
case 301:
|
||||||
|
mStatusText.AssignLiteral("Moved Permanently");
|
||||||
|
break;
|
||||||
|
case 304:
|
||||||
|
mStatusText.AssignLiteral("Not Modified");
|
||||||
|
break;
|
||||||
|
case 307:
|
||||||
|
mStatusText.AssignLiteral("Temporary Redirect");
|
||||||
|
break;
|
||||||
|
case 500:
|
||||||
|
mStatusText.AssignLiteral("Internal Server Error");
|
||||||
|
break;
|
||||||
|
|
||||||
|
// also well known
|
||||||
|
case 100:
|
||||||
|
mStatusText.AssignLiteral("Continue");
|
||||||
|
break;
|
||||||
|
case 101:
|
||||||
|
mStatusText.AssignLiteral("Switching Protocols");
|
||||||
|
break;
|
||||||
|
case 201:
|
||||||
|
mStatusText.AssignLiteral("Created");
|
||||||
|
break;
|
||||||
|
case 202:
|
||||||
|
mStatusText.AssignLiteral("Accepted");
|
||||||
|
break;
|
||||||
|
case 203:
|
||||||
|
mStatusText.AssignLiteral("Non Authoritative");
|
||||||
|
break;
|
||||||
|
case 204:
|
||||||
|
mStatusText.AssignLiteral("No Content");
|
||||||
|
break;
|
||||||
|
case 205:
|
||||||
|
mStatusText.AssignLiteral("Reset Content");
|
||||||
|
break;
|
||||||
|
case 206:
|
||||||
|
mStatusText.AssignLiteral("Partial Content");
|
||||||
|
break;
|
||||||
|
case 300:
|
||||||
|
mStatusText.AssignLiteral("Multiple Choices");
|
||||||
|
break;
|
||||||
|
case 302:
|
||||||
|
mStatusText.AssignLiteral("Found");
|
||||||
|
break;
|
||||||
|
case 303:
|
||||||
|
mStatusText.AssignLiteral("See Other");
|
||||||
|
break;
|
||||||
|
case 305:
|
||||||
|
mStatusText.AssignLiteral("Use Proxy");
|
||||||
|
break;
|
||||||
|
case 308:
|
||||||
|
mStatusText.AssignLiteral("Permanent Redirect");
|
||||||
|
break;
|
||||||
|
case 400:
|
||||||
|
mStatusText.AssignLiteral("Bad Request");
|
||||||
|
break;
|
||||||
|
case 401:
|
||||||
|
mStatusText.AssignLiteral("Unauthorized");
|
||||||
|
break;
|
||||||
|
case 402:
|
||||||
|
mStatusText.AssignLiteral("Payment Required");
|
||||||
|
break;
|
||||||
|
case 403:
|
||||||
|
mStatusText.AssignLiteral("Forbidden");
|
||||||
|
break;
|
||||||
|
case 405:
|
||||||
|
mStatusText.AssignLiteral("Method Not Allowed");
|
||||||
|
break;
|
||||||
|
case 406:
|
||||||
|
mStatusText.AssignLiteral("Not Acceptable");
|
||||||
|
break;
|
||||||
|
case 407:
|
||||||
|
mStatusText.AssignLiteral("Proxy Authentication Required");
|
||||||
|
break;
|
||||||
|
case 408:
|
||||||
|
mStatusText.AssignLiteral("Request Timeout");
|
||||||
|
break;
|
||||||
|
case 409:
|
||||||
|
mStatusText.AssignLiteral("Conflict");
|
||||||
|
break;
|
||||||
|
case 410:
|
||||||
|
mStatusText.AssignLiteral("Gone");
|
||||||
|
break;
|
||||||
|
case 411:
|
||||||
|
mStatusText.AssignLiteral("Length Required");
|
||||||
|
break;
|
||||||
|
case 412:
|
||||||
|
mStatusText.AssignLiteral("Precondition Failed");
|
||||||
|
break;
|
||||||
|
case 413:
|
||||||
|
mStatusText.AssignLiteral("Request Entity Too Large");
|
||||||
|
break;
|
||||||
|
case 414:
|
||||||
|
mStatusText.AssignLiteral("Request URI Too Long");
|
||||||
|
break;
|
||||||
|
case 415:
|
||||||
|
mStatusText.AssignLiteral("Unsupported Media Type");
|
||||||
|
break;
|
||||||
|
case 416:
|
||||||
|
mStatusText.AssignLiteral("Requested Range Not Satisfiable");
|
||||||
|
break;
|
||||||
|
case 417:
|
||||||
|
mStatusText.AssignLiteral("Expectation Failed");
|
||||||
|
break;
|
||||||
|
case 501:
|
||||||
|
mStatusText.AssignLiteral("Not Implemented");
|
||||||
|
break;
|
||||||
|
case 502:
|
||||||
|
mStatusText.AssignLiteral("Bad Gateway");
|
||||||
|
break;
|
||||||
|
case 503:
|
||||||
|
mStatusText.AssignLiteral("Service Unavailable");
|
||||||
|
break;
|
||||||
|
case 504:
|
||||||
|
mStatusText.AssignLiteral("Gateway Timeout");
|
||||||
|
break;
|
||||||
|
case 505:
|
||||||
|
mStatusText.AssignLiteral("HTTP Version Unsupported");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mStatusText.AssignLiteral("No Reason Phrase");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsHttpResponseHead::ParseStatusLine(const char *line)
|
nsHttpResponseHead::ParseStatusLine(const char *line)
|
||||||
{
|
{
|
||||||
@ -141,7 +286,7 @@ nsHttpResponseHead::ParseStatusLine(const char *line)
|
|||||||
|
|
||||||
if ((mVersion == NS_HTTP_VERSION_0_9) || !(line = PL_strchr(line, ' '))) {
|
if ((mVersion == NS_HTTP_VERSION_0_9) || !(line = PL_strchr(line, ' '))) {
|
||||||
mStatus = 200;
|
mStatus = 200;
|
||||||
mStatusText.AssignLiteral("OK");
|
AssignDefaultStatusText();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Status-Code
|
// Status-Code
|
||||||
@ -153,8 +298,7 @@ nsHttpResponseHead::ParseStatusLine(const char *line)
|
|||||||
|
|
||||||
// Reason-Phrase is whatever is remaining of the line
|
// Reason-Phrase is whatever is remaining of the line
|
||||||
if (!(line = PL_strchr(line, ' '))) {
|
if (!(line = PL_strchr(line, ' '))) {
|
||||||
LOG(("mal-formed response status line; assuming statusText = 'OK'\n"));
|
AssignDefaultStatusText();
|
||||||
mStatusText.AssignLiteral("OK");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
mStatusText = nsDependentCString(++line);
|
mStatusText = nsDependentCString(++line);
|
||||||
|
@ -112,6 +112,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void AssignDefaultStatusText();
|
||||||
void ParseVersion(const char *);
|
void ParseVersion(const char *);
|
||||||
void ParseCacheControl(const char *);
|
void ParseCacheControl(const char *);
|
||||||
void ParsePragma(const char *);
|
void ParsePragma(const char *);
|
||||||
|
Loading…
Reference in New Issue
Block a user