From: Shugo Maeda Date: 2005-07-11T10:39:19+09:00 Subject: [ruby-dev:26510] Re: WEBrick DoS vulnerability 前田です。 Masatoshi SEKI wrote: >> では、1.8では移行措置として、 >> >> * socketはデフォルトでnon-blocking modeにする。 >> * readの挙動も1.9と同様にする。 >> (今の1.8の仕様では、non-blocking modeにすること による挙動の違いが >> 大きいため) >> * ただし、ユーザが明示的にnon-blocking modeにした場合は、 readの挙動 >> を現状の1.8と同じ(読めるだけのデータをすぐに返 し、single thread >> では読めるデータがない場合にはEAGAINを発生)にす る。 >> >> というのはどうでしょう。 > > > おー。いいかも。 > > 三つ目の措置は、1.9系にも入れるのですか? 1.8だけかしら 1.8だけを考えていました。 GOTOU Yuuzou wrote: > EAGAINが発生するのはsingle threadの時だけだとすると、三つ目 > はあまりよくないと思います。なぜなら、仮にEAGAINを利用してデー > タが読み出せないことを検出するようなライブラリを考えると、そ > れはmulti threadの時には期待通りに動作しない可能性があるから > です。データの到着を調べる時はthreadを使っているかどうかに関 > 係なく動くようにIO.selectを使うべきであれば、そのように誘導 > する仕様になっているのが好ましいので、EAGAINを上げるという挙 > 動は残さないほうがいいと私は思います。 現状がよくないというのは私もそう思いますので、3番目の項目 については互換性の維持を主張される方に納得していただける 範囲で望ましい挙動に修正するのがよいと思います。 -- 前田 修吾