@@ -1233,6 +1233,53 @@ HttpTransactHeaders::normalize_accept_encoding(const OverridableHttpConfigParams
12331233 header->field_delete (ae_field);
12341234 Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] removed non-br non-gzip Accept-Encoding" );
12351235 }
1236+ } else if (normalize_ae == 4 ) {
1237+ // Force Accept-Encoding header to zstd or fallback to br/gzip or no header.
1238+ if (HttpTransactCache::match_content_encoding (ae_field, " zstd" )) {
1239+ header->field_value_set (ae_field, " zstd" , 4 );
1240+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to zstd" );
1241+ } else if (HttpTransactCache::match_content_encoding (ae_field, " br" )) {
1242+ header->field_value_set (ae_field, " br" , 2 );
1243+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to br" );
1244+ } else if (HttpTransactCache::match_content_encoding (ae_field, " gzip" )) {
1245+ header->field_value_set (ae_field, " gzip" , 4 );
1246+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to gzip" );
1247+ } else {
1248+ header->field_delete (ae_field);
1249+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] removed non-zstd non-br non-gzip Accept-Encoding" );
1250+ }
1251+ } else if (normalize_ae == 5 ) {
1252+ // Force Accept-Encoding header to zstd,br,gzip combinations or individual algorithms or no header.
1253+ if (HttpTransactCache::match_content_encoding (ae_field, " zstd" ) &&
1254+ HttpTransactCache::match_content_encoding (ae_field, " br" ) &&
1255+ HttpTransactCache::match_content_encoding (ae_field, " gzip" )) {
1256+ header->field_value_set (ae_field, " zstd, br, gzip" , 14 );
1257+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to zstd, br, gzip" );
1258+ } else if (HttpTransactCache::match_content_encoding (ae_field, " zstd" ) &&
1259+ HttpTransactCache::match_content_encoding (ae_field, " br" )) {
1260+ header->field_value_set (ae_field, " zstd, br" , 8 );
1261+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to zstd, br" );
1262+ } else if (HttpTransactCache::match_content_encoding (ae_field, " zstd" ) &&
1263+ HttpTransactCache::match_content_encoding (ae_field, " gzip" )) {
1264+ header->field_value_set (ae_field, " zstd, gzip" , 10 );
1265+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to zstd, gzip" );
1266+ } else if (HttpTransactCache::match_content_encoding (ae_field, " br" ) &&
1267+ HttpTransactCache::match_content_encoding (ae_field, " gzip" )) {
1268+ header->field_value_set (ae_field, " br, gzip" , 8 );
1269+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to br, gzip" );
1270+ } else if (HttpTransactCache::match_content_encoding (ae_field, " zstd" )) {
1271+ header->field_value_set (ae_field, " zstd" , 4 );
1272+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to zstd" );
1273+ } else if (HttpTransactCache::match_content_encoding (ae_field, " br" )) {
1274+ header->field_value_set (ae_field, " br" , 2 );
1275+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to br" );
1276+ } else if (HttpTransactCache::match_content_encoding (ae_field, " gzip" )) {
1277+ header->field_value_set (ae_field, " gzip" , 4 );
1278+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] normalized Accept-Encoding to gzip" );
1279+ } else {
1280+ header->field_delete (ae_field);
1281+ Dbg (dbg_ctl_http_trans, " [Headers::normalize_accept_encoding] removed non-zstd non-br non-gzip Accept-Encoding" );
1282+ }
12361283 } else {
12371284 static bool logged = false ;
12381285
0 commit comments