From 15940067395b2185fc1120122a0b85ff696103a2 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 20 Apr 2025 11:40:27 +0200 Subject: [PATCH] FU: Improve merging of "Vary" response headers + debug header listing --- FU.pm | 7 +++---- FU/DebugImpl.pm | 11 +++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/FU.pm b/FU.pm index 37f90db..6a9ec47 100644 --- a/FU.pm +++ b/FU.pm @@ -863,14 +863,12 @@ sub _finalize { $r->{resbody} = ''; } else { + my @vary = ref $r->{reshdr}{vary} eq 'ARRAY' ? $r->{reshdr}{vary}->@* : defined $r->{reshdr}{vary} ? ($r->{reshdr}{vary}) : (); if (($hasgzip || $hasbrotli) && length($r->{resbody}) > 256 && !defined $r->{reshdr}{'content-encoding'} && FU::compress_mimes->{$r->{reshdr}{'content-type'}} ) { - - $r->{reshdr}{'vary'} = ($r->{reshdr}{'vary'} ? $r->{reshdr}{'vary'}.', ' : '').'accept-encoding' - if ($r->{reshdr}{'vary'}||'') !~ /accept-encoding/i; - + push @vary, 'accept-encoding'; if ($hasbrotli && ($r->{hdr}{'accept-encoding'}||'') =~ /\bbr\b/) { $r->{resbody} = FU::Util::brotli_compress(6, $r->{resbody}); $r->{reshdr}{'content-encoding'} = 'br'; @@ -880,6 +878,7 @@ sub _finalize { $r->{reshdr}{'content-encoding'} = 'gzip'; } } + $r->{reshdr}{vary} = @vary ? join ', ', @vary : undef; $r->{reshdr}{'content-length'} = length $r->{resbody}; $r->{resbody} = '' if (fu->method//'') eq 'HEAD'; } diff --git a/FU/DebugImpl.pm b/FU/DebugImpl.pm index eda2939..da5fc47 100644 --- a/FU/DebugImpl.pm +++ b/FU/DebugImpl.pm @@ -75,10 +75,13 @@ my @tabs = ( }; h2_ 'Headers'; table_ sub { - tr_ sub { - td_ $_; - td_ $r->{reshdr}{$_}; - } for sort keys $r->{reshdr}->%*; + for my $k (sort keys $r->{reshdr}->%*) { + my $v = $r->{reshdr}{$k}; + tr_ sub { + td_ $k; + td_ $_; + } for !defined $v ? () : ref $v ? @$v : ($v); + } }; ('Response') },