MCPcopy Create free account
hub / github.com/apache/trafficserver / normalize_accept_encoding

Function normalize_accept_encoding

plugins/compress/misc.cc:80–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

78} // end anonymous namespace
79
80void
81normalize_accept_encoding(TSHttpTxn /* txnp ATS_UNUSED */, TSMBuffer reqp, TSMLoc hdr_loc)
82{
83 TSMLoc field = TSMimeHdrFieldFind(reqp, hdr_loc, TS_MIME_FIELD_ACCEPT_ENCODING, TS_MIME_LEN_ACCEPT_ENCODING);
84 bool deflate = false;
85 bool gzip = false;
86 bool br = false;
87 // remove the accept encoding field(s),
88 // while finding out if gzip or deflate is supported.
89 while (field) {
90 int val_len;
91 const char *values_ = TSMimeHdrFieldValueStringGet(reqp, hdr_loc, field, -1, &val_len);
92 if (values_ && val_len) {
93 swoc::TextView values(values_, val_len);
94 while (values) {
95 swoc::TextView next{values.take_prefix_at(',')};
96 strip_ae_value(next);
97 if (strcasecmp("gzip", next) == 0) {
98 gzip = true;
99 } else if (strcasecmp("br", next) == 0) {
100 br = true;
101 } else if (strcasecmp("deflate", next) == 0) {
102 deflate = true;
103 }
104 }
105 }
106
107 TSMLoc tmp = TSMimeHdrFieldNextDup(reqp, hdr_loc, field);
108 TSMimeHdrFieldDestroy(reqp, hdr_loc, field); // catch retval?
109 TSHandleMLocRelease(reqp, hdr_loc, field);
110 field = tmp;
111 }
112
113 // append a new accept-encoding field in the header
114 if (deflate || gzip || br) {
115 TSMimeHdrFieldCreate(reqp, hdr_loc, &field);
116 TSMimeHdrFieldNameSet(reqp, hdr_loc, field, TS_MIME_FIELD_ACCEPT_ENCODING, TS_MIME_LEN_ACCEPT_ENCODING);
117 if (br) {
118 TSMimeHdrFieldValueStringInsert(reqp, hdr_loc, field, -1, "br", strlen("br"));
119 info("normalized accept encoding to br");
120 }
121 if (gzip) {
122 TSMimeHdrFieldValueStringInsert(reqp, hdr_loc, field, -1, "gzip", strlen("gzip"));
123 info("normalized accept encoding to gzip");
124 } else if (deflate) {
125 TSMimeHdrFieldValueStringInsert(reqp, hdr_loc, field, -1, "deflate", strlen("deflate"));
126 info("normalized accept encoding to deflate");
127 }
128
129 TSMimeHdrFieldAppend(reqp, hdr_loc, field);
130 TSHandleMLocRelease(reqp, hdr_loc, field);
131 }
132}
133
134void
135hide_accept_encoding(TSHttpTxn /* txnp ATS_UNUSED */, TSMBuffer reqp, TSMLoc hdr_loc, const char *hidden_header_name)

Callers 3

build_requestMethod · 0.85
handle_requestFunction · 0.85

Calls 12

TSMimeHdrFieldFindFunction · 0.85
strip_ae_valueFunction · 0.85
strcasecmpFunction · 0.85
TSMimeHdrFieldNextDupFunction · 0.85
TSMimeHdrFieldDestroyFunction · 0.85
TSHandleMLocReleaseFunction · 0.85
TSMimeHdrFieldCreateFunction · 0.85
TSMimeHdrFieldNameSetFunction · 0.85
TSMimeHdrFieldAppendFunction · 0.85
take_prefix_atMethod · 0.80

Tested by

no test coverage detected