Project

General

Profile

Bug #10484

http response throw error with broken gzip compressed block(but can decompress)

Added by charsyam (DaeMyung Kang) about 5 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
2.1.4
[ruby-core:66125]

Description

I meet a exception case for gzip compress, Ruby throws Zlib::BufError

Actually, I think this is not ruby's bug.
because this site make some weird gzip compressed block.

but major browser can handle this site well.

so, I this it is better to handle this case in Ruby also.

http://xe.sketchbooks.co.kr/806541

I found two things but it is because of weird compress block.
first, even though, it meets end of block, it just return Z_OK.
so, ruby zlib binding can't return last data block.
so I add code for returning last block in this case.
second. finish causes Zlib::BufError exception in this case.
so I catch this Exception only when finish causes Zlib::BufError

and I found one more thing.
Ruby 1.8.x run below code well. But ruby 2.x can't
(I just guess, it is unintented side effect to push block code for inflate)

require 'net/https'
require 'open-uri'

url = "http://xe.sketchbooks.co.kr/806541"
uri = URI.parse(url.to_s)
http = Net::HTTP::new(uri.host, uri.port)

http_get = Net::HTTP::Get.new(uri.request_uri)
response = http.request(http_get)

Files

ruby_weird_gzip.patch (1.27 KB) ruby_weird_gzip.patch charsyam (DaeMyung Kang), 11/07/2014 08:13 AM

Also available in: Atom PDF