From: "kazuhiko (Kazuhiko Shiozaki)" Date: 2013-02-24T07:36:07+09:00 Subject: [ruby-dev:47076] [ruby-trunk - Bug #7924] r39232 以降 net/http で正しく reponse を取得出来ないケースがある Issue #7924 has been updated by kazuhiko (Kazuhiko Shiozaki). accept-encodingの無指定時に、http.rbのget()でaccept-encodingをつけていて、そのためにgeneric_request.rbが「あ、指定してるんならdecode_content=falseでいいよね」としているのが原因。 accept-encodingの無指定時に"gzip;q=1.0,deflate;q=0.6,identity;q=0.3"をセットするコードが、http.rbのget()とhttp/generic_request.rbのinitialize()の両方にあって、後者は前者の可能性を考慮していない。なので、この問題はputでは起きない。 その二箇所以外にaccept-encodingをセットしているコードはなさそうなので、http.rbのget()から「accept-encodingの無指定時に〜」を除けばなおるはず。 ---------------------------------------- Bug #7924: r39232 以降 net/http で正しく reponse を取得出来ないケースがある https://bugs.ruby-lang.org/issues/7924#change-36837 Author: hsbt (Hiroshi SHIBATA) Status: Open Priority: Immediate Assignee: naruse (Yui NARUSE) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2013-02-24 trunk 39439) [x86_64-darwin12.2.1] r39232 以降、tDiary の以下のようなコードが動かなくなりました。 https://github.com/tdiary/tdiary-contrib/blob/master/plugin/flickr.rb#L185 単純に net/http を使用して flickr.com から xml を取得するコードですが、r39232で加えた 変更により、本来 inflate されるべき response.body が gzip の状態のままになっています。 response を inflate するケースの考慮漏れのような気がします。 -- http://bugs.ruby-lang.org/