Hello!

When debugging some issue regarding possibly broken gzipped HTTP response in
Go[1], I noticed that curl has no problems decompressing it, and returns
successful exit code.

    $ curl -s https://regexr.com/ --compressed >/dev/null; echo $?
    0

However, the compressed data appears to be broken, as interpreted by
other decompressors. Most of them return all the data successfully (i.e.
up to and including the closing </html>), and report the error
afterwards. Busybox zcat loses some data at the end, though.

    $ curl -s https://regexr.com/ --header 'Accept-Encoding: gzip' | zcat 
>/dev/null; echo $?
    gzip: stdin: unexpected end of file
    1

    $ curl -s https://regexr.com/ --header 'Accept-Encoding: gzip' | zstdcat 
>/dev/null; echo $?
    zstd: /*stdin*\: premature gz end
    1

Go also reports this as an error[1].

I've found the place where libcurl ignores the error: [2]

Does anyone has a clue what's going on? Does curl erroneously not report
a broken file? Or it's some known workaround for broken web servers?

I've searched the mailing list archive for Z_BUF_ERROR-related
workarounds, but it appears that those workarounds are not in the code
anymore (and they were more complicated than ignoring the error anyway).

[1] https://github.com/gocolly/colly/issues/511
[2] 
https://github.com/curl/curl/blob/8df455479f8801bbebad8839fc96abbffa711603/lib/content_encoding.c#L222-L224
[3] 
https://github.com/facebook/zstd/blob/4c144cf9c5fc396199bfb4b527ad7d213d194963/programs/fileio.c#L2021-L2047
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html

Reply via email to