diff options
author | Luke Granger-Brown <git@lukegb.com> | 2021-04-22 02:33:59 +0000 |
---|---|---|
committer | Luke Granger-Brown <git@lukegb.com> | 2021-04-22 02:33:59 +0000 |
commit | 97dde3cdd983b2fef9e45dd0ca8d62716a62417d (patch) | |
tree | e20c5813ba043d2199a3b46835f74d7f98f0bc49 /src/libutil/compression.cc | |
parent | 8d651a1f68c018b8a10dd37da81e9d3612073656 (diff) |
libutil: allow decompression with none/empty method
The S3 store relies on the ability to be able to decompress things with
an empty method, because it just passes the value of the Content-Encoding
directly to decompress.
If the file is not compressed, then this will cause the compression
routine to get confused.
This caused NixOS/nixpkgs#120120.
Diffstat (limited to 'src/libutil/compression.cc')
-rw-r--r-- | src/libutil/compression.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libutil/compression.cc b/src/libutil/compression.cc index 08812ef57..c5dae42fa 100644 --- a/src/libutil/compression.cc +++ b/src/libutil/compression.cc @@ -186,7 +186,9 @@ struct BrotliDecompressionSink : ChunkedCompressionSink ref<std::string> decompress(const std::string & method, const std::string & in) { - if (method == "br") { + if (method == "none" || method == "") + return make_ref<std::string>(in); + else if (method == "br") { StringSink ssink; auto sink = makeDecompressionSink(method, ssink); (*sink)(in); |