[#44310] プログラムに対して意図したとおりの文字列を渡す方法 — "Information Kanasansoft" <kanasansoft@...>

kanasanです。

9 messages 2007/12/05

[#44332] クラス:相互参照系の作成方法について質問です — "Saburoh Sakai" <sabroh@...>

はじめまして、さかいと申します。

12 messages 2007/12/11

[#44366] Rake改善プロジェクト — "Hajime Hoshi" <hajimehoshi@...>

東京大学修士 1 年の星一と申します。

14 messages 2007/12/19

[ruby-list:44319] Re: multipartで送信した時のRails/cgi.rbの動作について

From: "KOSEKI Kengo" <kengo@...>
Date: 2007-12-06 08:36:07 UTC
List: ruby-list #44319
こせきです。
桑田さん、回答ありがとうございます。

On Dec 5, 2007 6:31 PM, Makoto Kuwata <kwa@kuwata-lab.com> wrote:
> 動作自体は仕様通りだと思うのですが、そもそもこの仕様が正しいのかと
> いう疑問はあります。
> type="file" の場合は値がTempfileオブジェクトでいいと思いますが、
> type="text" や type="radio" までもがTempfileオブジェクトになるのは
> なんか間違ってるように思います。
> Content-Disposition で filename が指定されていた場合のみTempfileに
> して、それ以外はStringでいいように思います。

そうですよね……。

メモリの問題があるとしても、/tmpに空のファイルを
作る理由は無いと思いました。

最初はStringIOに入れておいて、そのフィールドの入力が
一定サイズを超えたらTempfileに移行するといいのではと
思ったんですが、、。

> > 繰り返しpostするとDOS攻撃に利用できそうだと思ったんですが……。
> > このくらいは平気なものでしょうか。
>
> 確かに、個数制限を設けたほうがいいと思います。
> あと、1ファイルあたりのデータサイズの制限とかも。
> 今のcgi.rbだと、際限なく受け付けてしまいます。

うむむ。。

> 試しにパッチを作成してみました。Ruby1.8.6のcgi.rbをもとにしています。

ありがとうございます!
試してみます。



あと、大きなフォームをPOSTする実験をしていて、
いくつか自分が誤解していた事に気づきました。

■ POST時に古いtmpファイルはクリアされる。

ソースをちゃんと追ってないんですが、そういう動作を
しているようでした。無闇に増え続けるわけではないんですね。。

■ tmpファイルが一定数以上になるとToo many open file
で止まる。

Thu Dec 06 16:25:42 +0900 2007: Error calling Dispatcher.dispatch
#<Errno::EMFILE: Too many open files - /tmp/CGI.10296.1015>

手元の環境だと1000個ちょっとで止まっていました。
その後しばらくはエラーになったりしますが、
サーバ(mongrel/webrick)は動作し続けるようでした。

止まるまでに数分かかっていて、たぶん

irb(main):002:0> (1..1000).inject(0){|s,i| s + i}
=> 500500

50万回くらいループしているんだと思います。

--
koseki

In This Thread