From: "naruse (Yui NARUSE)" Date: 2012-05-25T15:38:48+09:00 Subject: [ruby-core:45233] [ruby-trunk - Feature #6492] Inflate all HTTP Content-Encoding: deflate, gzip, x-gzip responses by default Issue #6492 has been updated by naruse (Yui NARUSE). drbrain (Eric Hodel) wrote: > naruse (Yui NARUSE) wrote: > > I agree with the concept of the patch, but > > > > > + ensure > > > + @socket.finish if Inflater === @socket > > > > When @socket is Socket-like object, the object should behave like a socket. > > Inflater#finish should be Inflater#shutdown or Inflater#close and this if-clause is not needed. > > I considered this, but calling #close would also terminate a persistent connection which is undesirable. > > I don't see a way to cleanly finish the inflate stream without an if-clause. I see, If Inflater's @socket.read returns nil or a string shorter than clen, it means the input is finished and @inflate can finish. So at that time, you can call @inflate.finish. But on persistent connection current simple read all may eat another content, mustn't it? I suspect they must see content body. ---------------------------------------- Feature #6492: Inflate all HTTP Content-Encoding: deflate, gzip, x-gzip responses by default https://bugs.ruby-lang.org/issues/6492#change-26821 Author: drbrain (Eric Hodel) Status: Open Priority: Normal Assignee: Category: lib Target version: 2.0.0 =begin This patch moves the compression-handling code from Net::HTTP#get to Net::HTTPResponse to allow decompression to occur by default on any response body. (A future patch will set the Accept-Encoding on all requests that allow response bodies by default.) Instead of having separate decompression code for deflate and gzip-encoded responses, (({Zlib::Inflate.new(32 + Zlib::MAX_WBITS)})) is used which automatically detects and inflated gzip-wrapped streams which allows for simpler processing of gzip bodies (no need to create a StringIO). =end -- http://bugs.ruby-lang.org/