From: nobu.nakada@... Date: 2003-08-18T18:59:50+09:00 Subject: [ruby-list:38137] Re: ポートが閉じているときの例外など なかだです。 At Sat, 16 Aug 2003 19:22:15 +0900, Takahiro Kambe wrote: > > > 実はエラーだった場合は、getsockopt(2)をSOL_SOCKETレベルとSO_ERRORで呼 > > > び出してエラーの状態を取得するとECONNREFUSEDだったとわかります。しかし、 > > > 続けてconnect(2)を呼ぶとEINVALになって、ほんとうの理由はわかりません。 > > > > SO_ERRORでerrnoを調べるというのは、今でもやってるんですが、これ > おぉ、そうでしたか。手元で別途テストプログラムで確認したところ、 > > > がEINVALだけではなくてEINPROGRESSのときにも必要ということでしょ > > うか。 > > 一応はだいじょうぶです。ただ、connect(2)をループで繰り返しているなら、 > (必須ではないかもしれませんが)EINPRROGRESSのときもやった方が良いと言え > ます。早くエラーが検知できて、connect(2)の呼び出しを1回節約できる場合 > があります。 EINPROGRESSのような時間がかかっているときに、システムコール一回 の間くらいではそうそう条件は変わらないのではないかという気がす るのですが。 対応としては、FreeBSD(*BSD全部?)でもWAIT_IN_PROGRESSを有効にす るということでいいんでしょうか。全システムで有効にしたほうがい いのかな? -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦