なかだです。

At Sat, 16 Aug 2003 01:56:57 +0900,
Takahiro Kambe wrote:
> non blocking モードでconnect(2)エラーでEINPROGRESSだった場合ですが、
> 
> ほんとうはエラーではなかった場合は、続けてconnect(2)を呼んでエラーで
> EALREADYとなるか、そのうち成功することになります。
> 
> 実はエラーだった場合は、getsockopt(2)をSOL_SOCKETレベルとSO_ERRORで呼
> び出してエラーの状態を取得するとECONNREFUSEDだったとわかります。しかし、
> 続けてconnect(2)を呼ぶとEINVALになって、ほんとうの理由はわかりません。

SO_ERRORでerrnoを調べるというのは、今でもやってるんですが、これ
がEINVALだけではなくてEINPROGRESSのときにも必要ということでしょ
うか。

revision 1.93
date: 2003/05/16 15:18:14;  author: nobu;  state: Exp;  lines: +35 -14
* ext/socket/socket.c (ruby_connect): connect() after EINPROGRESS
  returns EINVAL on some platforms, need to check true error
  status.  [ruby-core:01037]

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦