From: charsyam@... Date: 2014-11-07T08:13:50+00:00 Subject: [ruby-core:66125] [ruby-trunk - Bug #10484] [Open] http response throw error with broken gzip compressed block(but can decompress) Issue #10484 has been reported by DaeMyung Kang. ---------------------------------------- Bug #10484: http response throw error with broken gzip compressed block(but can decompress) https://bugs.ruby-lang.org/issues/10484 * Author: DaeMyung Kang * Status: Open * Priority: Low * Assignee: * Category: * Target version: * ruby -v: 2.1.4 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 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) ```ruby 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) -- https://bugs.ruby-lang.org/