なひです. > From: hisanori / sitc.toshiba.co.jp [mailto:hisanori / sitc.toshiba.co.jp] > Sent: Friday, February 26, 1999 3:00 PM > > Meeting2000-0.92b1で,一応acceptのEPROTOとwrite syscallのSIGPIPEを > > 保護してみました. > > いろいろありがとうございます。 使わせて頂いているおかげです.(^-^) > > acceptの方については「Errno::EPROTO」なんて捕まえ方で > > 良かったんでしょうか.RubyのErrorクラスの解説を見つけられませんでした. > > ぴかちう本(やめなさい)待ちでしたっけ? (^_^; > > > > ただ,厳格な(?)だえもんを作ろうとするともっとあちこち面倒ですし, > > 「正しく(?)例外が上がってるんだから」ということで > > acceptのEPROTOは無視してもいいのかもしれません. > > 何を捕まえればいいのかわからないんですが、ともかくacceptで例外が上がる > 可能性があるなら、ループの中でrescueしておいたほうが確かにいいですね。 まだまだ浅いRuby歴ですが, 「UNIX system callの修復不可能なエラーは例外として投げ上げられる」 ということになっているのかなーなんて感じています. # RubyのplatformはUNIXだけではありませんから, # 正しい言い方じゃありませんね.(^_^; で,比較的ありそうだったのがacceptとSIGPIPEで, 実際試してみると(手製のHTTP/1.1クライアント作成途中Rubyスクリプトで DoSアタックをかけてみると(^_^;)その二つが上がってくるようでした. # signalは「上がる」じゃ変かしら.(^_^; > 全部捕まえるかなぁ…。 サーバが落ちたら困りますから,なんでもかんでも捕まえて 全部ログに出しておく,というのも手ですね.(^_^; > > SIGPIPEの方は,ほっとくと / application.commitを通らないので, > > 溜めたデータがリセットされちゃいますよね... > > そうなんでしたっけ? SIGKILL(?)以外なら落ちるときでも > httpserver.initialze の中の、ensureは通ると思ってました。スレッドが異 > なると駄目なのかなぁ。本当はどうなんでしょう。教えてえらい人。 すいません.クライアント側のRuby scriptを gdbでattachしてステップ実行してたんですが, デバッガの影響/なひの操作ミスかもしれません. ちゃんと実験してから報告します.ごめんなさい. ああ,まつもとさんからもお返事が... ああ,すいません.m(..m > From: matz / ev.netlab.co.jp > Sent: Friday, February 26, 1999 3:16 PM > |1 writeの例外として捕まえられないのか > > はOSの性格上できないようです(例外にできるならシグナルは来な > い,そういうものらしい.ぐるる). そういえばfcntlとかで「書けますか?」と問い合わせることが できたようなできないような (これまたちゃんと調べてないいいかげんな記憶). ただ,書けることを確認した直後にwriteしても, その間に線が切れちゃうかもしれないわけで, いずれにせよSIGPIPEを捕まえるのは必須だと思います.たぶん.(^_^;