You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2017/11/07 17:47:35 UTC
[trafficserver] 02/03: TS-5057: Add 103 Early Hints support
This is an automated email from the ASF dual-hosted git repository.
zwoop pushed a commit to branch 7.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit c5f0fc5bd902d4f2b90c1b958eef0b953716ca53
Author: Masaori Koshiba <ma...@apache.org>
AuthorDate: Mon Nov 6 10:30:47 2017 +0900
TS-5057: Add 103 Early Hints support
(cherry picked from commit 1a9944ce2ffd1c54ef0fb3e30ecd539a28b8b028)
---
doc/developer-guide/api/types/TSHttpStatus.en.rst | 2 ++
lib/cppapi/include/atscppapi/HttpStatus.h | 1 +
lib/ts/apidefs.h.in | 1 +
lib/ts/mkdfa.c | 1 +
proxy/InkAPITest.cc | 14 +++++++++++++-
proxy/hdrs/HTTP.cc | 1 +
proxy/hdrs/HTTP.h | 1 +
proxy/http/HttpTransact.cc | 3 ++-
8 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/doc/developer-guide/api/types/TSHttpStatus.en.rst b/doc/developer-guide/api/types/TSHttpStatus.en.rst
index 9cfe9fe..78d2453 100644
--- a/doc/developer-guide/api/types/TSHttpStatus.en.rst
+++ b/doc/developer-guide/api/types/TSHttpStatus.en.rst
@@ -45,6 +45,8 @@ Enumeration Members
.. c:member:: TSHttpStatus TS_HTTP_STATUS_SWITCHING_PROTOCOL
+.. c:member:: TSHttpStatus TS_HTTP_STATUS_EARLY_HINTS
+
.. c:member:: TSHttpStatus TS_HTTP_STATUS_OK
.. c:member:: TSHttpStatus TS_HTTP_STATUS_CREATED
diff --git a/lib/cppapi/include/atscppapi/HttpStatus.h b/lib/cppapi/include/atscppapi/HttpStatus.h
index 5c2e373..071aef1 100644
--- a/lib/cppapi/include/atscppapi/HttpStatus.h
+++ b/lib/cppapi/include/atscppapi/HttpStatus.h
@@ -37,6 +37,7 @@ enum HttpStatus {
HTTP_STATUS_CONTINUE = 100,
HTTP_STATUS_SWITCHING_PROTOCOL = 101,
+ HTTP_STATUS_EARLY_HINTS = 103,
HTTP_STATUS_OK = 200,
HTTP_STATUS_CREATED = 201,
diff --git a/lib/ts/apidefs.h.in b/lib/ts/apidefs.h.in
index 4f0ada3..7efe019 100644
--- a/lib/ts/apidefs.h.in
+++ b/lib/ts/apidefs.h.in
@@ -155,6 +155,7 @@ typedef enum {
TS_HTTP_STATUS_NONE = 0,
TS_HTTP_STATUS_CONTINUE = 100,
TS_HTTP_STATUS_SWITCHING_PROTOCOL = 101,
+ TS_HTTP_STATUS_EARLY_HINTS = 103,
TS_HTTP_STATUS_OK = 200,
TS_HTTP_STATUS_CREATED = 201,
TS_HTTP_STATUS_ACCEPTED = 202,
diff --git a/lib/ts/mkdfa.c b/lib/ts/mkdfa.c
index 3767b0c..9dcc890 100644
--- a/lib/ts/mkdfa.c
+++ b/lib/ts/mkdfa.c
@@ -138,6 +138,7 @@ info_t methods[] = {
info_t statuses[] = {
{"100", "HTTP_STATUS_CONTINUE", -1},
{"101", "HTTP_STATUS_SWITCHING_PROTOCOL", -1},
+ {"103", "HTTP_STATUS_EARLY_HINTS", -1},
{"200", "HTTP_STATUS_OK", -1},
{"201", "HTTP_STATUS_CREATED", -1},
{"202", "HTTP_STATUS_ACCEPTED", -1},
diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc
index 486c343..5f67c69 100644
--- a/proxy/InkAPITest.cc
+++ b/proxy/InkAPITest.cc
@@ -3272,7 +3272,7 @@ REGRESSION_TEST(SDK_API_TSHttpHdr)(RegressionTest *test, int /* atype ATS_UNUSED
}
if (strcmp("Not Modified", TSHttpHdrReasonLookup(TS_HTTP_STATUS_NOT_MODIFIED)) != 0) {
- SDK_RPRINT(test, "TSHttpHdrReasonLookup", "TestCase2", TC_FAIL, "TSHttpHdrReasonLookup returns Value's mismatch");
+ SDK_RPRINT(test, "TSHttpHdrReasonLookup", "TestCase4", TC_FAIL, "TSHttpHdrReasonLookup returns Value's mismatch");
if (test_passed_Http_Hdr_Reason_Lookup == true) {
test_passed_Http_Hdr_Reason_Lookup = false;
}
@@ -3280,6 +3280,15 @@ REGRESSION_TEST(SDK_API_TSHttpHdr)(RegressionTest *test, int /* atype ATS_UNUSED
SDK_RPRINT(test, "TSHttpHdrReasonLookup", "TestCase4", TC_PASS, "ok");
}
+ if (strcmp("Early Hints", TSHttpHdrReasonLookup(TS_HTTP_STATUS_EARLY_HINTS)) != 0) {
+ SDK_RPRINT(test, "TSHttpHdrReasonLookup", "TestCase5", TC_FAIL, "TSHttpHdrReasonLookup returns Value's mismatch");
+ if (test_passed_Http_Hdr_Reason_Lookup == true) {
+ test_passed_Http_Hdr_Reason_Lookup = false;
+ }
+ } else {
+ SDK_RPRINT(test, "TSHttpHdrReasonLookup", "TestCase5", TC_PASS, "ok");
+ }
+
// Copy
if (test_passed_Http_Hdr_Create == true) {
if (TSHttpHdrCopy(bufp3, hdr_loc3, bufp1, hdr_loc1) == TS_ERROR) {
@@ -5488,6 +5497,7 @@ typedef enum {
ORIG_TS_HTTP_STATUS_CONTINUE = 100,
ORIG_TS_HTTP_STATUS_SWITCHING_PROTOCOL = 101,
+ ORIG_TS_HTTP_STATUS_EARLY_HINTS = 103,
ORIG_TS_HTTP_STATUS_OK = 200,
ORIG_TS_HTTP_STATUS_CREATED = 201,
@@ -5657,6 +5667,8 @@ REGRESSION_TEST(SDK_API_TSConstant)(RegressionTest *test, int /* atype ATS_UNUSE
PRINT_DIFF(TS_HTTP_STATUS_NONE);
PRINT_DIFF(TS_HTTP_STATUS_CONTINUE);
PRINT_DIFF(TS_HTTP_STATUS_SWITCHING_PROTOCOL);
+ PRINT_DIFF(TS_HTTP_STATUS_EARLY_HINTS);
+
PRINT_DIFF(TS_HTTP_STATUS_OK);
PRINT_DIFF(TS_HTTP_STATUS_CREATED);
diff --git a/proxy/hdrs/HTTP.cc b/proxy/hdrs/HTTP.cc
index 3be7064..bf8aea3 100644
--- a/proxy/hdrs/HTTP.cc
+++ b/proxy/hdrs/HTTP.cc
@@ -756,6 +756,7 @@ http_hdr_reason_lookup(unsigned status)
HTTP_STATUS_ENTRY(100, Continue); // [RFC2616]
HTTP_STATUS_ENTRY(101, Switching Protocols); // [RFC2616]
HTTP_STATUS_ENTRY(102, Processing); // [RFC2518]
+ HTTP_STATUS_ENTRY(103, Early Hints); // TODO: add RFC number
// 103-199 Unassigned
HTTP_STATUS_ENTRY(200, OK); // [RFC2616]
HTTP_STATUS_ENTRY(201, Created); // [RFC2616]
diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h
index 5891834..251e3b9 100644
--- a/proxy/hdrs/HTTP.h
+++ b/proxy/hdrs/HTTP.h
@@ -43,6 +43,7 @@ enum HTTPStatus {
HTTP_STATUS_CONTINUE = 100,
HTTP_STATUS_SWITCHING_PROTOCOL = 101,
+ HTTP_STATUS_EARLY_HINTS = 103,
HTTP_STATUS_OK = 200,
HTTP_STATUS_CREATED = 201,
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 29f492e..c898fce 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -4071,7 +4071,8 @@ HttpTransact::handle_forward_server_connection_open(State *s)
// dont update the hostdb. let us try again with what we currently think.
}
- if (s->hdr_info.server_response.status_get() == HTTP_STATUS_CONTINUE) {
+ if (s->hdr_info.server_response.status_get() == HTTP_STATUS_CONTINUE ||
+ s->hdr_info.server_response.status_get() == HTTP_STATUS_EARLY_HINTS) {
handle_100_continue_response(s);
return;
}
--
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.