diff --git a/include/ts/apidefs.h.in b/include/ts/apidefs.h.in index a97bacaee07..8d142e37aa3 100644 --- a/include/ts/apidefs.h.in +++ b/include/ts/apidefs.h.in @@ -1281,6 +1281,7 @@ extern tsapi const char *TS_HTTP_VALUE_CLOSE; extern tsapi const char *TS_HTTP_VALUE_COMPRESS; extern tsapi const char *TS_HTTP_VALUE_DEFLATE; extern tsapi const char *TS_HTTP_VALUE_GZIP; +extern tsapi const char *TS_HTTP_VALUE_BROTLI; extern tsapi const char *TS_HTTP_VALUE_IDENTITY; extern tsapi const char *TS_HTTP_VALUE_KEEP_ALIVE; extern tsapi const char *TS_HTTP_VALUE_MAX_AGE; @@ -1304,6 +1305,7 @@ extern tsapi int TS_HTTP_LEN_CLOSE; extern tsapi int TS_HTTP_LEN_COMPRESS; extern tsapi int TS_HTTP_LEN_DEFLATE; extern tsapi int TS_HTTP_LEN_GZIP; +extern tsapi int TS_HTTP_LEN_BROTLI; extern tsapi int TS_HTTP_LEN_IDENTITY; extern tsapi int TS_HTTP_LEN_KEEP_ALIVE; extern tsapi int TS_HTTP_LEN_MAX_AGE; diff --git a/plugins/compress/compress.cc b/plugins/compress/compress.cc index 5f1011ef351..d12efb934ee 100644 --- a/plugins/compress/compress.cc +++ b/plugins/compress/compress.cc @@ -55,8 +55,6 @@ using namespace Gzip; const int ZLIB_COMPRESSION_LEVEL = 6; const char *dictionary = nullptr; -const char *TS_HTTP_VALUE_BROTLI = "br"; -const int TS_HTTP_LEN_BROTLI = 2; // brotli compression quality 1-11. Testing proved level '6' #if HAVE_BROTLI_ENCODE_H diff --git a/plugins/stats_over_http/stats_over_http.c b/plugins/stats_over_http/stats_over_http.c index e497275248c..5dae13b9951 100644 --- a/plugins/stats_over_http/stats_over_http.c +++ b/plugins/stats_over_http/stats_over_http.c @@ -61,10 +61,6 @@ /* global holding the path used for access to this JSON data */ #define DEFAULT_URL_PATH "_stats" -// TODO: replace with TS_HTTP_* when BROTLI is supported -#define HTTP_VALUE_BR "br" -#define HTTP_LEN_BR 2 - // from mod_deflate: // ZLIB's compression algorithm uses a // 0-9 based scale that GZIP does where '1' is 'Best speed' @@ -630,7 +626,7 @@ stats_origin(TSCont contp ATS_UNUSED, TSEvent event ATS_UNUSED, void *edata) my_state->encoding = init_gzip(my_state, GZIP_MODE); } #if HAVE_BROTLI_ENCODE_H - else if (len >= HTTP_LEN_BR && strstr(str, HTTP_VALUE_BR) != NULL) { + else if (len >= TS_HTTP_LEN_BROTLI && strstr(str, TS_HTTP_VALUE_BROTLI) != NULL) { TSDebug(PLUGIN_NAME, "Saw br in accept encoding"); my_state->encoding = init_br(my_state); } diff --git a/proxy/hdrs/HTTP.cc b/proxy/hdrs/HTTP.cc index 73cd163624e..4e17d542f44 100644 --- a/proxy/hdrs/HTTP.cc +++ b/proxy/hdrs/HTTP.cc @@ -85,6 +85,7 @@ const char *HTTP_VALUE_CLOSE; const char *HTTP_VALUE_COMPRESS; const char *HTTP_VALUE_DEFLATE; const char *HTTP_VALUE_GZIP; +const char *HTTP_VALUE_BROTLI; const char *HTTP_VALUE_IDENTITY; const char *HTTP_VALUE_KEEP_ALIVE; const char *HTTP_VALUE_MAX_AGE; @@ -120,6 +121,7 @@ int HTTP_LEN_CLOSE; int HTTP_LEN_COMPRESS; int HTTP_LEN_DEFLATE; int HTTP_LEN_GZIP; +int HTTP_LEN_BROTLI; int HTTP_LEN_IDENTITY; int HTTP_LEN_KEEP_ALIVE; int HTTP_LEN_MAX_AGE; @@ -218,6 +220,7 @@ http_init() HTTP_VALUE_COMPRESS = hdrtoken_string_to_wks("compress"); HTTP_VALUE_DEFLATE = hdrtoken_string_to_wks("deflate"); HTTP_VALUE_GZIP = hdrtoken_string_to_wks("gzip"); + HTTP_VALUE_BROTLI = hdrtoken_string_to_wks("br"); HTTP_VALUE_IDENTITY = hdrtoken_string_to_wks("identity"); HTTP_VALUE_KEEP_ALIVE = hdrtoken_string_to_wks("keep-alive"); HTTP_VALUE_MAX_AGE = hdrtoken_string_to_wks("max-age"); @@ -242,6 +245,7 @@ http_init() HTTP_LEN_COMPRESS = hdrtoken_wks_to_length(HTTP_VALUE_COMPRESS); HTTP_LEN_DEFLATE = hdrtoken_wks_to_length(HTTP_VALUE_DEFLATE); HTTP_LEN_GZIP = hdrtoken_wks_to_length(HTTP_VALUE_GZIP); + HTTP_LEN_BROTLI = hdrtoken_wks_to_length(HTTP_VALUE_BROTLI); HTTP_LEN_IDENTITY = hdrtoken_wks_to_length(HTTP_VALUE_IDENTITY); HTTP_LEN_KEEP_ALIVE = hdrtoken_wks_to_length(HTTP_VALUE_KEEP_ALIVE); HTTP_LEN_MAX_AGE = hdrtoken_wks_to_length(HTTP_VALUE_MAX_AGE); diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h index b5ee3654cc4..6d01fb2e189 100644 --- a/proxy/hdrs/HTTP.h +++ b/proxy/hdrs/HTTP.h @@ -367,6 +367,7 @@ extern const char *HTTP_VALUE_CLOSE; extern const char *HTTP_VALUE_COMPRESS; extern const char *HTTP_VALUE_DEFLATE; extern const char *HTTP_VALUE_GZIP; +extern const char *HTTP_VALUE_BROTLI; extern const char *HTTP_VALUE_IDENTITY; extern const char *HTTP_VALUE_KEEP_ALIVE; extern const char *HTTP_VALUE_MAX_AGE; @@ -391,6 +392,7 @@ extern int HTTP_LEN_CLOSE; extern int HTTP_LEN_COMPRESS; extern int HTTP_LEN_DEFLATE; extern int HTTP_LEN_GZIP; +extern int HTTP_LEN_BROTLI; extern int HTTP_LEN_IDENTITY; extern int HTTP_LEN_KEEP_ALIVE; extern int HTTP_LEN_MAX_AGE; diff --git a/proxy/hdrs/HdrToken.cc b/proxy/hdrs/HdrToken.cc index a4e161c4527..fe6abf6ada7 100644 --- a/proxy/hdrs/HdrToken.cc +++ b/proxy/hdrs/HdrToken.cc @@ -113,7 +113,10 @@ static const char *_hdrtoken_strs[] = { "Forwarded", // RFC-8470 - "Early-Data"}; + "Early-Data", + + // RFC-7932 + "br"}; static HdrTokenTypeBinding _hdrtoken_strs_type_initializers[] = { {"file", HDRTOKEN_TYPE_SCHEME}, @@ -366,7 +369,10 @@ static const char *_hdrtoken_commonly_tokenized_strs[] = { "Forwarded", // RFC-8470 - "Early-Data"}; + "Early-Data", + + // RFC-7932 + "br"}; /*------------------------------------------------------------------------- -------------------------------------------------------------------------*/ diff --git a/proxy/hdrs/MIME.cc b/proxy/hdrs/MIME.cc index 729ec9da977..857f73a9db1 100644 --- a/proxy/hdrs/MIME.cc +++ b/proxy/hdrs/MIME.cc @@ -164,6 +164,7 @@ const char *MIME_VALUE_CLOSE; const char *MIME_VALUE_COMPRESS; const char *MIME_VALUE_DEFLATE; const char *MIME_VALUE_GZIP; +const char *MIME_VALUE_BROTLI; const char *MIME_VALUE_IDENTITY; const char *MIME_VALUE_KEEP_ALIVE; const char *MIME_VALUE_MAX_AGE; @@ -919,6 +920,7 @@ mime_init() MIME_VALUE_COMPRESS = hdrtoken_string_to_wks("compress"); MIME_VALUE_DEFLATE = hdrtoken_string_to_wks("deflate"); MIME_VALUE_GZIP = hdrtoken_string_to_wks("gzip"); + MIME_VALUE_BROTLI = hdrtoken_string_to_wks("br"); MIME_VALUE_IDENTITY = hdrtoken_string_to_wks("identity"); MIME_VALUE_KEEP_ALIVE = hdrtoken_string_to_wks("keep-alive"); MIME_VALUE_MAX_AGE = hdrtoken_string_to_wks("max-age"); diff --git a/proxy/hdrs/MIME.h b/proxy/hdrs/MIME.h index f7e513616b5..6474dd0e86a 100644 --- a/proxy/hdrs/MIME.h +++ b/proxy/hdrs/MIME.h @@ -466,6 +466,7 @@ extern const char *MIME_VALUE_CLOSE; extern const char *MIME_VALUE_COMPRESS; extern const char *MIME_VALUE_DEFLATE; extern const char *MIME_VALUE_GZIP; +extern const char *MIME_VALUE_BROTLI; extern const char *MIME_VALUE_IDENTITY; extern const char *MIME_VALUE_KEEP_ALIVE; extern const char *MIME_VALUE_MAX_AGE; @@ -566,6 +567,7 @@ extern int MIME_LEN_CLOSE; extern int MIME_LEN_COMPRESS; extern int MIME_LEN_DEFLATE; extern int MIME_LEN_GZIP; +extern int MIME_LEN_BLOTLI; extern int MIME_LEN_IDENTITY; extern int MIME_LEN_KEEP_ALIVE; extern int MIME_LEN_MAX_AGE; diff --git a/src/traffic_server/InkAPI.cc b/src/traffic_server/InkAPI.cc index 5224bed55a3..527f0223b5a 100644 --- a/src/traffic_server/InkAPI.cc +++ b/src/traffic_server/InkAPI.cc @@ -316,6 +316,7 @@ tsapi const char *TS_HTTP_VALUE_CLOSE; tsapi const char *TS_HTTP_VALUE_COMPRESS; tsapi const char *TS_HTTP_VALUE_DEFLATE; tsapi const char *TS_HTTP_VALUE_GZIP; +tsapi const char *TS_HTTP_VALUE_BROTLI; tsapi const char *TS_HTTP_VALUE_IDENTITY; tsapi const char *TS_HTTP_VALUE_KEEP_ALIVE; tsapi const char *TS_HTTP_VALUE_MAX_AGE; @@ -339,6 +340,7 @@ tsapi int TS_HTTP_LEN_CLOSE; tsapi int TS_HTTP_LEN_COMPRESS; tsapi int TS_HTTP_LEN_DEFLATE; tsapi int TS_HTTP_LEN_GZIP; +tsapi int TS_HTTP_LEN_BROTLI; tsapi int TS_HTTP_LEN_IDENTITY; tsapi int TS_HTTP_LEN_KEEP_ALIVE; tsapi int TS_HTTP_LEN_MAX_AGE; @@ -1765,6 +1767,7 @@ api_init() TS_HTTP_VALUE_COMPRESS = HTTP_VALUE_COMPRESS; TS_HTTP_VALUE_DEFLATE = HTTP_VALUE_DEFLATE; TS_HTTP_VALUE_GZIP = HTTP_VALUE_GZIP; + TS_HTTP_VALUE_BROTLI = HTTP_VALUE_BROTLI; TS_HTTP_VALUE_IDENTITY = HTTP_VALUE_IDENTITY; TS_HTTP_VALUE_KEEP_ALIVE = HTTP_VALUE_KEEP_ALIVE; TS_HTTP_VALUE_MAX_AGE = HTTP_VALUE_MAX_AGE; @@ -1787,6 +1790,7 @@ api_init() TS_HTTP_LEN_COMPRESS = HTTP_LEN_COMPRESS; TS_HTTP_LEN_DEFLATE = HTTP_LEN_DEFLATE; TS_HTTP_LEN_GZIP = HTTP_LEN_GZIP; + TS_HTTP_LEN_BROTLI = HTTP_LEN_BROTLI; TS_HTTP_LEN_IDENTITY = HTTP_LEN_IDENTITY; TS_HTTP_LEN_KEEP_ALIVE = HTTP_LEN_KEEP_ALIVE; TS_HTTP_LEN_MAX_AGE = HTTP_LEN_MAX_AGE;