Bug #5451
cgi/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)
read_multipart'
\tfrom /usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:468:in
\tfrom /usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:630:in initialize_query'
initialize'
\tfrom /usr/local/ruby-1.9/lib/ruby/1.9.1/cgi/core.rb:806:in
\tfrom :18:in initialize'
new'
\tfrom /home/tdiary/tdiary/tdiary-core/misc/lib/fcgi_patch.rb:74:in
レポジトリをさかのぼると、 r19663 で、それまでのstdinput()を使っていたコードから$stdinを直接使うようになったようですが、何か強い理由があるのでなければ、cgi/core.rbの他のコードと同様に、ここでもstdinputを使ってもらえないでしょうか。
上述の問題は、その修正だけで解決することを確認しています。
また、1.9.3RC1で確認していますが、cgi/core.rbはtrunkのものと全く同一です。
かずひこ
Associated revisions
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]
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]
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]
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]
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]
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]
merge revision(s) 33472:¶
r33472 | xibbar | 2011-10-17 13:33:57 -0400 (Mon, 17 Oct 2011) | 4 lines
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] ------------------------------------------------------------------------
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
History
Updated by xibbar (Takeyuki FUJIOKA) about 8 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]
Tue Oct 18 02:24:19 2011 Takeyuki FUJIOKA xibbar@ruby-lang.org
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e