Project

General

Profile

Actions

Bug #5451

closed

cgi/core.rbのread_multipart()で$stdioを直接使っているために、ruby-fcgiでmultipart/form-dataが使えない

Added by kazuhiko (Kazuhiko Shiozaki) over 12 years ago. Updated over 12 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]
Backport:
[ruby-dev:44601]

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のものと全く同一です。

かずひこ

Actions #1

Updated by xibbar (Takeyuki FUJIOKA) over 12 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

  • lib/cgi/core.rb (QueryExtension#read_multiparat): replace 'stdinput'
    from '$stdin' because using fast cgi. [Bug #5451]
Actions

Also available in: Atom PDF

Like0
Like0