You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2012/05/05 19:27:58 UTC

git commit: TS-1248: Update HTTP status codes and strings

Updated Branches:
  refs/heads/master a2fd13c83 -> 58bc52e99


TS-1248: Update HTTP status codes and strings


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/58bc52e9
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/58bc52e9
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/58bc52e9

Branch: refs/heads/master
Commit: 58bc52e99a7dcd10d632befb40d127bddf889c49
Parents: a2fd13c
Author: James Peach <jp...@apache.org>
Authored: Tue May 1 21:17:19 2012 -0700
Committer: James Peach <jp...@apache.org>
Committed: Sat May 5 10:27:42 2012 -0700

----------------------------------------------------------------------
 CHANGES              |    2 +
 proxy/InkAPITest.cc  |    2 +-
 proxy/api/ts/ts.h.in |   21 ++++++-
 proxy/hdrs/HTTP.cc   |  158 ++++++++++++++++++++++-----------------------
 proxy/hdrs/HTTP.h    |    2 +-
 5 files changed, 100 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/58bc52e9/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 314f3ab..6315a18 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.1.4
+  *) [TS-1248] update HTTP status codes and strings
+
   *) [TS-1245] proxy.config.http.connect_ports may be '*'
 
   *) [TS-1239] TSHttpTxnServerAddrSet implementation

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/58bc52e9/proxy/InkAPITest.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc
index 4df2b0e..1a65983 100644
--- a/proxy/InkAPITest.cc
+++ b/proxy/InkAPITest.cc
@@ -3392,7 +3392,7 @@ REGRESSION_TEST(SDK_API_TSHttpHdr) (RegressionTest * test, int atype, int *pstat
     test_passed_Http_Hdr_Reason_Lookup = true;
   }
 
-  if (strcmp("Ok", TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK)) != 0) {
+  if (strcmp("OK", TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK)) != 0) {
     SDK_RPRINT(test, "TSHttpHdrReasonLookup", "TestCase2", TC_FAIL,
                "TSHttpHdrReasonLookup returns Value's mismatch");
     if (test_passed_Http_Hdr_Reason_Lookup == true) {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/58bc52e9/proxy/api/ts/ts.h.in
----------------------------------------------------------------------
diff --git a/proxy/api/ts/ts.h.in b/proxy/api/ts/ts.h.in
index 66f30a0..0c5dce8 100644
--- a/proxy/api/ts/ts.h.in
+++ b/proxy/api/ts/ts.h.in
@@ -145,6 +145,9 @@ extern "C"
     TS_HTTP_STATUS_NO_CONTENT = 204,
     TS_HTTP_STATUS_RESET_CONTENT = 205,
     TS_HTTP_STATUS_PARTIAL_CONTENT = 206,
+    TS_HTTP_STATUS_MULTI_STATUS = 207,
+    TS_HTTP_STATUS_ALREADY_REPORTED = 208,
+    TS_HTTP_STATUS_IM_USED = 211,
 
     TS_HTTP_STATUS_MULTIPLE_CHOICES = 300,
     TS_HTTP_STATUS_MOVED_PERMANENTLY = 301,
@@ -153,6 +156,7 @@ extern "C"
     TS_HTTP_STATUS_NOT_MODIFIED = 304,
     TS_HTTP_STATUS_USE_PROXY = 305,
     TS_HTTP_STATUS_TEMPORARY_REDIRECT = 307,
+    TS_HTTP_STATUS_PERMANENT_REDIRECT = 308,
 
     TS_HTTP_STATUS_BAD_REQUEST = 400,
     TS_HTTP_STATUS_UNAUTHORIZED = 401,
@@ -170,13 +174,28 @@ extern "C"
     TS_HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE = 413,
     TS_HTTP_STATUS_REQUEST_URI_TOO_LONG = 414,
     TS_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
+    TS_HTTP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
+    TS_HTTP_STATUS_EXPECTATION_FAILED = 417,
+    TS_HTTP_STATUS_UNPROCESSABLE_ENTITY = 422,
+    TS_HTTP_STATUS_LOCKED = 423,
+    TS_HTTP_STATUS_FAILED_DEPENDENCY = 424,
+    TS_HTTP_STATUS_UPGRADE_REQUIRED = 426,
+    TS_HTTP_STATUS_PRECONDITION_REQUIRED = 428,
+    TS_HTTP_STATUS_TOO_MANY_REQUESTS = 429,
+    TS_HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
 
     TS_HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
     TS_HTTP_STATUS_NOT_IMPLEMENTED = 501,
     TS_HTTP_STATUS_BAD_GATEWAY = 502,
     TS_HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
     TS_HTTP_STATUS_GATEWAY_TIMEOUT = 504,
-    TS_HTTP_STATUS_HTTPVER_NOT_SUPPORTED = 505
+    TS_HTTP_STATUS_HTTPVER_NOT_SUPPORTED = 505,
+    TS_HTTP_STATUS_VARIANT_ALSO_NEGOTIATES = 506,
+    TS_HTTP_STATUS_INSUFFICIENT_STORAGE = 507,
+    TS_HTTP_STATUS_LOOP_DETECTED = 508,
+    TS_HTTP_STATUS_NOT_EXTENDED = 510,
+    TS_HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511
+
   } TSHttpStatus;
 
   /**

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/58bc52e9/proxy/hdrs/HTTP.cc
----------------------------------------------------------------------
diff --git a/proxy/hdrs/HTTP.cc b/proxy/hdrs/HTTP.cc
index fcc8fb8..2ccad25 100644
--- a/proxy/hdrs/HTTP.cc
+++ b/proxy/hdrs/HTTP.cc
@@ -741,92 +741,86 @@ http_hdr_reason_set(HdrHeap *heap, HTTPHdrImpl *hh, const char *value, int lengt
   -------------------------------------------------------------------------*/
 
 const char *
-http_hdr_reason_lookup(HTTPStatus status)
+http_hdr_reason_lookup(unsigned status)
 {
+#define HTTP_STATUS_ENTRY(value, reason) \
+    case value: return #reason
+
   switch (status) {
-  case HTTP_STATUS_NONE:
-    return "None";
-  case HTTP_STATUS_CONTINUE:
-    return "Continue";
-  case HTTP_STATUS_SWITCHING_PROTOCOL:
-    return "Switching Protocol";
-  case HTTP_STATUS_OK:
-    return "Ok";
-  case HTTP_STATUS_CREATED:
-    return "Created";
-  case HTTP_STATUS_ACCEPTED:
-    return "Accepted";
-  case HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION:
-    return "Non Authoritative Information";
-  case HTTP_STATUS_NO_CONTENT:
-    return "No Content";
-  case HTTP_STATUS_RESET_CONTENT:
-    return "Reset Content";
-  case HTTP_STATUS_PARTIAL_CONTENT:
-    return "Partial Content";
-  case HTTP_STATUS_MULTIPLE_CHOICES:
-    return "Multiple Choices";
-  case HTTP_STATUS_MOVED_PERMANENTLY:
-    return "Moved Permanently";
-  case HTTP_STATUS_MOVED_TEMPORARILY:
-    return "Moved Temporarily";
-  case HTTP_STATUS_SEE_OTHER:
-    return "See Other";
-  case HTTP_STATUS_NOT_MODIFIED:
-    return "Not Modified";
-  case HTTP_STATUS_USE_PROXY:
-    return "Use Proxy";
-  case HTTP_STATUS_TEMPORARY_REDIRECT:
-    return "Temporary Redirect";
-  case HTTP_STATUS_BAD_REQUEST:
-    return "Bad Request";
-  case HTTP_STATUS_UNAUTHORIZED:
-    return "Unauthorized";
-  case HTTP_STATUS_PAYMENT_REQUIRED:
-    return "Payment Required";
-  case HTTP_STATUS_FORBIDDEN:
-    return "Forbidden";
-  case HTTP_STATUS_NOT_FOUND:
-    return "Not Found";
-  case HTTP_STATUS_METHOD_NOT_ALLOWED:
-    return "Method Not Allowed";
-  case HTTP_STATUS_NOT_ACCEPTABLE:
-    return "Not Acceptable";
-  case HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED:
-    return "Proxy Authentication Required";
-  case HTTP_STATUS_REQUEST_TIMEOUT:
-    return "Request Timeout";
-  case HTTP_STATUS_CONFLICT:
-    return "Conflict";
-  case HTTP_STATUS_GONE:
-    return "Gone";
-  case HTTP_STATUS_LENGTH_REQUIRED:
-    return "Length Required";
-  case HTTP_STATUS_PRECONDITION_FAILED:
-    return "Precondition Failed";
-  case HTTP_STATUS_RANGE_NOT_SATISFIABLE:
-    return "Requested Range Not Satisfiable";
-  case HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE:
-    return "Request Entity Too Large";
-  case HTTP_STATUS_REQUEST_URI_TOO_LONG:
-    return "Request URI Too Long";
-  case HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE:
-    return "Unsupported Media Type";
-  case HTTP_STATUS_INTERNAL_SERVER_ERROR:
-    return "Internal Server Error";
-  case HTTP_STATUS_NOT_IMPLEMENTED:
-    return "Not Implemented";
-  case HTTP_STATUS_BAD_GATEWAY:
-    return "Bad Gateway";
-  case HTTP_STATUS_SERVICE_UNAVAILABLE:
-    return "Service Unavailable";
-  case HTTP_STATUS_GATEWAY_TIMEOUT:
-    return "Gateway Timeout";
-  case HTTP_STATUS_HTTPVER_NOT_SUPPORTED:
-    return "HTTP Version Not Supported";
+    HTTP_STATUS_ENTRY(0, None);                                       // TS_HTTP_STATUS_NONE
+    HTTP_STATUS_ENTRY(100, Continue);                                 // [RFC2616]
+    HTTP_STATUS_ENTRY(101, Switching Protocols);                      // [RFC2616]
+    HTTP_STATUS_ENTRY(102, Processing);                               // [RFC2518]
+    // 103-199 Unassigned
+    HTTP_STATUS_ENTRY(200, OK);                                       // [RFC2616]
+    HTTP_STATUS_ENTRY(201, Created);                                  // [RFC2616]
+    HTTP_STATUS_ENTRY(202, Accepted);                                 // [RFC2616]
+    HTTP_STATUS_ENTRY(203, Non-Authoritative Information);            // [RFC2616]
+    HTTP_STATUS_ENTRY(204, No Content);                               // [RFC2616]
+    HTTP_STATUS_ENTRY(205, Reset Content);                            // [RFC2616]
+    HTTP_STATUS_ENTRY(206, Partial Content);                          // [RFC2616]
+    HTTP_STATUS_ENTRY(207, Multi-Status);                             // [RFC4918]
+    HTTP_STATUS_ENTRY(208, Already Reported);                         // [RFC5842]
+    // 209-225 Unassigned
+    HTTP_STATUS_ENTRY(226, IM Used);                                  // [RFC3229]
+    // 227-299 Unassigned
+    HTTP_STATUS_ENTRY(300, Multiple Choices);                         // [RFC2616]
+    HTTP_STATUS_ENTRY(301, Moved Permanently);                        // [RFC2616]
+    HTTP_STATUS_ENTRY(302, Found);                                    // [RFC2616]
+    HTTP_STATUS_ENTRY(303, See Other);                                // [RFC2616]
+    HTTP_STATUS_ENTRY(304, Not Modified);                             // [RFC2616]
+    HTTP_STATUS_ENTRY(305, Use Proxy);                                // [RFC2616]
+    // 306 Reserved                                                   // [RFC2616]
+    HTTP_STATUS_ENTRY(307, Temporary Redirect);                       // [RFC2616]
+    HTTP_STATUS_ENTRY(308, Permanent Redirect);                       // [RFC-reschke-http-status-308-07]
+    // 309-399 Unassigned
+    HTTP_STATUS_ENTRY(400, Bad Request);                              // [RFC2616]
+    HTTP_STATUS_ENTRY(401, Unauthorized);                             // [RFC2616]
+    HTTP_STATUS_ENTRY(402, Payment Required);                         // [RFC2616]
+    HTTP_STATUS_ENTRY(403, Forbidden);                                // [RFC2616]
+    HTTP_STATUS_ENTRY(404, Not Found);                                // [RFC2616]
+    HTTP_STATUS_ENTRY(405, Method Not Allowed);                       // [RFC2616]
+    HTTP_STATUS_ENTRY(406, Not Acceptable);                           // [RFC2616]
+    HTTP_STATUS_ENTRY(407, Proxy Authentication Required);            // [RFC2616]
+    HTTP_STATUS_ENTRY(408, Request Timeout);                          // [RFC2616]
+    HTTP_STATUS_ENTRY(409, Conflict);                                 // [RFC2616]
+    HTTP_STATUS_ENTRY(410, Gone);                                     // [RFC2616]
+    HTTP_STATUS_ENTRY(411, Length Required);                          // [RFC2616]
+    HTTP_STATUS_ENTRY(412, Precondition Failed);                      // [RFC2616]
+    HTTP_STATUS_ENTRY(413, Request Entity Too Large);                 // [RFC2616]
+    HTTP_STATUS_ENTRY(414, Request-URI Too Long);                     // [RFC2616]
+    HTTP_STATUS_ENTRY(415, Unsupported Media Type);                   // [RFC2616]
+    HTTP_STATUS_ENTRY(416, Requested Range Not Satisfiable);          // [RFC2616]
+    HTTP_STATUS_ENTRY(417, Expectation Failed);                       // [RFC2616]
+    HTTP_STATUS_ENTRY(422, Unprocessable Entity);                     // [RFC4918]
+    HTTP_STATUS_ENTRY(423, Locked);                                   // [RFC4918]
+    HTTP_STATUS_ENTRY(424, Failed Dependency);                        // [RFC4918]
+    // 425 Reserved                                                   // [RFC2817]
+    HTTP_STATUS_ENTRY(426, Upgrade Required);                         // [RFC2817]
+    // 427 Unassigned
+    HTTP_STATUS_ENTRY(428, Precondition Required);                    // [RFC6585]
+    HTTP_STATUS_ENTRY(429, Too Many Requests);                        // [RFC6585]
+    // 430 Unassigned
+    HTTP_STATUS_ENTRY(431, Request Header Fields Too Large);          // [RFC6585]
+    // 432-499 Unassigned
+    HTTP_STATUS_ENTRY(500, Internal Server Error);                    // [RFC2616]
+    HTTP_STATUS_ENTRY(501, Not Implemented);                          // [RFC2616]
+    HTTP_STATUS_ENTRY(502, Bad Gateway);                              // [RFC2616]
+    HTTP_STATUS_ENTRY(503, Service Unavailable);                      // [RFC2616]
+    HTTP_STATUS_ENTRY(504, Gateway Timeout);                          // [RFC2616]
+    HTTP_STATUS_ENTRY(505, HTTP Version Not Supported);               // [RFC2616]
+    HTTP_STATUS_ENTRY(506, Variant Also Negotiates);                  // [RFC2295]
+    HTTP_STATUS_ENTRY(507, Insufficient Storage);                     // [RFC4918]
+    HTTP_STATUS_ENTRY(508, Loop Detected);                            // [RFC5842]
+    // 509 Unassigned
+    HTTP_STATUS_ENTRY(510, Not Extended);                             // [RFC2774]
+    HTTP_STATUS_ENTRY(511, Network Authentication Required);          // [RFC6585]
+    // 512-599 Unassigned
   }
 
-  return (NULL);
+#undef HTTP_STATUS_ENTRY
+
+  return NULL;
 }
 
 /*-------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/58bc52e9/proxy/hdrs/HTTP.h
----------------------------------------------------------------------
diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h
index 06a1fcf..d936a5c 100644
--- a/proxy/hdrs/HTTP.h
+++ b/proxy/hdrs/HTTP.h
@@ -475,7 +475,7 @@ void http_hdr_url_set(HdrHeap *heap, HTTPHdrImpl *hh, URLImpl *url);
 void http_hdr_status_set(HTTPHdrImpl *hh, HTTPStatus status);
 const char *http_hdr_reason_get(HTTPHdrImpl *hh, int *length);
 void http_hdr_reason_set(HdrHeap *heap, HTTPHdrImpl *hh, const char *value, int length, bool must_copy);
-const char *http_hdr_reason_lookup(HTTPStatus status);
+const char *http_hdr_reason_lookup(unsigned status);
 
 void http_parser_init(HTTPParser *parser);
 void http_parser_clear(HTTPParser *parser);