Commit 1c726bcb32

Chris Burgess <9002722+cgbur@users.noreply.github.com>
2023-09-26 23:16:40
std.http: add identity to content encodings (#16493)
Some servers will respond with the identity encoding, meaning no encoding, especially when responding to range-get requests. Adding the identity encoding stops the header parser from failing when it encounters this.
1 parent 5d90717
Changed files (3)
lib/std/http/Client.zig
@@ -762,6 +762,7 @@ pub const Request = struct {
                 req.response.skip = false;
                 if (!req.response.parser.done) {
                     if (req.response.transfer_compression) |tc| switch (tc) {
+                        .identity => req.response.compression = .none,
                         .compress => return error.CompressionNotSupported,
                         .deflate => req.response.compression = .{
                             .deflate = std.compress.zlib.decompressStream(req.client.allocator, req.transferReader()) catch return error.CompressionInitializationFailed,
lib/std/http/Server.zig
@@ -528,6 +528,7 @@ pub const Response = struct {
 
         if (!res.request.parser.done) {
             if (res.request.transfer_compression) |tc| switch (tc) {
+                .identity => res.request.compression = .none,
                 .compress => return error.CompressionNotSupported,
                 .deflate => res.request.compression = .{
                     .deflate = std.compress.zlib.decompressStream(res.allocator, res.transferReader()) catch return error.CompressionInitializationFailed,
lib/std/http.zig
@@ -285,6 +285,7 @@ pub const TransferEncoding = enum {
 };
 
 pub const ContentEncoding = enum {
+    identity,
     compress,
     deflate,
     gzip,