Bug #5451
closedcgi/core.rbのread_multipart()で$stdioを直接使っているために、ruby-fcgiでmultipart/form-dataが使えない
Description
ruby-fcgiを使うと、multipart/form-dataの時にPOSTできないことに気づきました。
調べたところ、ruby-fcgiでは、CGI#stdinputを@request.inに上書きしているのに、cgi/core.rbのread_multipart()でだけ$stdinを直接使っているために、以下のように例外が発生します。 ( https://github.com/tdiary/tdiary-core/issues/102 )
/usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:468:in read': Invalid argument - <STDIN> (Errno::EINVAL) \tfrom /usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:468:in
read_multipart'
\tfrom /usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:630:in initialize_query' \tfrom /usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:806:in
initialize'
\tfrom :18:in initialize' \tfrom /home/tdiary/tdiary/tdiary-core/misc/lib/fcgi_patch.rb:74:in
new'
レポジトリをさかのぼると、 r19663 で、それまでのstdinput()を使っていたコードから$stdinを直接使うようになったようですが、何か強い理由があるのでなければ、cgi/core.rbの他のコードと同様に、ここでもstdinputを使ってもらえないでしょうか。
上述の問題は、その修正だけで解決することを確認しています。
また、1.9.3RC1で確認していますが、cgi/core.rbはtrunkのものと全く同一です。
かずひこ
Updated by xibbar (Takeyuki FUJIOKA) about 13 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r33472.
Kazuhiko, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
Tue Oct 18 02:24:19 2011 Takeyuki FUJIOKA xibbar@ruby-lang.org
- lib/cgi/core.rb (QueryExtension#read_multiparat): replace 'stdinput'
from '$stdin' because using fast cgi. [Bug #5451]