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

Method normalize_accept_encoding

src/proxy/http/HttpTransactHeaders.cc:1195–1251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1193}
1194
1195void
1196HttpTransactHeaders::normalize_accept_encoding(const OverridableHttpConfigParams *ohcp, HTTPHdr *header)
1197{
1198 int normalize_ae = ohcp->normalize_ae;
1199
1200 if (normalize_ae) {
1201 MIMEField *ae_field = header->field_find(MIME_FIELD_ACCEPT_ENCODING, MIME_LEN_ACCEPT_ENCODING);
1202
1203 if (ae_field) {
1204 if (normalize_ae == 1) {
1205 // Force Accept-Encoding header to gzip or no header.
1206 if (HttpTransactCache::match_content_encoding(ae_field, "gzip")) {
1207 header->field_value_set(ae_field, "gzip", 4);
1208 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] normalized Accept-Encoding to gzip");
1209 } else {
1210 header->field_delete(ae_field);
1211 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] removed non-gzip Accept-Encoding");
1212 }
1213 } else if (normalize_ae == 2) {
1214 // Force Accept-Encoding header to br (Brotli) or no header.
1215 if (HttpTransactCache::match_content_encoding(ae_field, "br")) {
1216 header->field_value_set(ae_field, "br", 2);
1217 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] normalized Accept-Encoding to br");
1218 } else if (HttpTransactCache::match_content_encoding(ae_field, "gzip")) {
1219 header->field_value_set(ae_field, "gzip", 4);
1220 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] normalized Accept-Encoding to gzip");
1221 } else {
1222 header->field_delete(ae_field);
1223 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] removed non-br Accept-Encoding");
1224 }
1225 } else if (normalize_ae == 3) {
1226 // Force Accept-Encoding header to br,gzip, or br, or gzip, or no header.
1227 if (HttpTransactCache::match_content_encoding(ae_field, "br") &&
1228 HttpTransactCache::match_content_encoding(ae_field, "gzip")) {
1229 header->field_value_set(ae_field, "br, gzip", 8);
1230 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] normalized Accept-Encoding to br, gzip");
1231 } else if (HttpTransactCache::match_content_encoding(ae_field, "br")) {
1232 header->field_value_set(ae_field, "br", 2);
1233 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] normalized Accept-Encoding to br");
1234 } else if (HttpTransactCache::match_content_encoding(ae_field, "gzip")) {
1235 header->field_value_set(ae_field, "gzip", 4);
1236 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] normalized Accept-Encoding to gzip");
1237 } else {
1238 header->field_delete(ae_field);
1239 Dbg(dbg_ctl_http_trans, "[Headers::normalize_accept_encoding] removed non-br non-gzip Accept-Encoding");
1240 }
1241 } else {
1242 static bool logged = false;
1243
1244 if (!logged) {
1245 Error("proxy.config.http.normalize_ae value out of range");
1246 logged = true;
1247 }
1248 }
1249 }
1250 }
1251}
1252

Callers

nothing calls this directly

Calls 4

field_findMethod · 0.80
field_value_setMethod · 0.80
field_deleteMethod · 0.80
ErrorClass · 0.50

Tested by

no test coverage detected