Commit c8e15d47 authored by Dietmar Maurer's avatar Dietmar Maurer

fix bug #385: correctly handle Accept-Encoding

parent 61473e52
......@@ -120,6 +120,7 @@ sub finish_response {
delete $reqstate->{log};
delete $reqstate->{request};
delete $reqstate->{proto};
delete $reqstate->{accept_gzip};
if ($reqstate->{tmpfilename}) {
unlink $reqstate->{tmpfilename};
......@@ -147,6 +148,8 @@ sub response {
#print "$$: send response: " . Dumper($resp);
$nocomp = 1 if !$reqstate->{accept_gzip};
my $code = $resp->code;
my $msg = $resp->message || HTTP::Status::status_message($code);
($msg) = $msg =~m/^(.*)$/m;
......@@ -302,6 +305,7 @@ sub proxy_request {
$headers->{'cookie'} = PVE::REST::create_auth_cookie($ticket) if $ticket;
$headers->{'CSRFPreventionToken'} = $token if $token;
$headers->{'Accept-Encoding'} = 'gzip' if $reqstate->{accept_gzip};
my $content;
......@@ -336,6 +340,7 @@ sub proxy_request {
delete $hdr->{HTTPVersion};
my $header = HTTP::Headers->new(%$hdr);
my $resp = HTTP::Response->new($code, $msg, $header, $body);
# Note: disable compression, because body is already compressed
$self->response($reqstate, $resp, undef, 1);
};
warn $@ if $@;
......@@ -689,6 +694,8 @@ sub unshift_read_header {
}
my $conn = $r->header('Connection');
my $accept_enc = $r->header('Accept-Encoding');
$reqstate->{accept_gzip} = ($accept_enc && $accept_enc =~ m/gzip/) ? 1 : 0;
if ($conn) {
$reqstate->{keep_alive} = 0 if $conn =~ m/close/oi;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment