2007年12月 3日

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

こせきと申します。

multipart でRails/cgi.rbにポストした時の動作について
2点質問があります。


1つ目は、cygwinのruby + rails 環境での質問なのですが、
入力フィールドが200〜250個以上あるようなフォームをmultipartで

ポストすると、サーバが停止します。

この原因・回避方法に心あたりのある方いらっしゃいませんでしょうか?

以下に確認用のRailsアプリケーションを上げました。

- http://www.geocities.jp/quen_go/tmp/2007-12-02/mptest.zip
- http://www.geocities.jp/quen_go/tmp/2007-12-02/mptest.exe.zip

上が通常のソース、下はrubyscript2exeで自分の環境を実行形式に
したものです。(メールの末尾にバージョン情報を書きます。)

./script/server (exeはダブルクリック) で起動して、
http://localhost:3000/ でアクセスします。
手元の環境では、Postボタンを押すとレスポンスが帰ってこなく
なります。

mongrelとwebrickの両方で再現しています。
また、Linuxで再現しないことも確認しています。
cygwin以外のWindows環境では確認していません。

プリントデバッグとデバッガで停止箇所を追ったところ、
breakpoint.rbからDRbサーバのスレッドを起動しようとして
止まっているように見えました。

http://www.google.com/codesearch?hl=ja&q=+file:ruby-1.8.6/.*/drb/drb.rb%24+def%5Csrun+show:w0I-P4EtEWI:GDq-HAfl278:iFbuQTcwODA&sa=N&cd=1&ct=rc&cs_p ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/ruby-1.8.6.tar.gz&cs_f=ruby-1.8.6/lib/drb/drb.rb#first

このrunメソッドが完了しません。

ブレークポイントは設定していないつもりです、、。
一応script/breakpointerで接続できるか試したのですが、
うまくいきませんでした。
たびたびコアダンプしているので、正常な動作ではないと
思うのですが……。

もう1つの質問は、上記の問題と関係あるかどうかわかりませんが、
空のフィールドを大量に作ってmultipartで送信すると、
テンポラリファイルが大量に作成されます。
この現象は、Linuxでも確認しました。

1000個のフィールドで800個ほどのファイルが作成されていましたが、
これは想定されている動作でしょうか?

tmpfile.rbを見ると、1個のtmpfileを作るたびに、それまで
作成されたtmpfileの存在を1つずつ確認しているようですし、
繰り返しpostするとDOS攻撃に利用できそうだと思ったんですが……。
このくらいは平気なものでしょうか。


手元の環境は以下の通りです。

$ ruby --version
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-cygwin]
$ ./script/about
About your application's environment
Ruby version 1.8.6 (i386-cygwin)
RubyGems version 0.9.0
Rails version 1.2.6
Active Record version 1.15.6
Action Pack version 1.13.6
Action Web Service version 1.2.6
Action Mailer version 1.3.6
Active Support version 1.4.4

以上、よろしくお願いいたします。

--
koseki
http://d.hatena.ne.jp/koseki2/

投稿者 xml-rpc : 2007年12月 3日 04:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67210
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。