In message <20030812150516.GV37221 / barber.fe.rn.tuat.ac.jp>
	on Wed, 13 Aug 2003 00:05:33 +0900,
	IWAOKA Masahiro <iwaoka / tuat.jac-net.com> wrote:
> > 気がつきました。でも、ruby レベルで呼び出すのに Errno::EINVAL と
> > いうのは普通はあり得ないように思うのですが…
> 
> ですよねえ、、、出るとすれば、システム依存で常に出るか常に出ないか
> のどちらかだと思うんですが、、、条件によって出たり出なかったりする
> 僕のとこが一番変?
1.6.8の ext/socket/socket.c を斜め読みしてみましたが、ruby_connect()の
中で、non-blockingモードでconnect(2)を繰り返しています。

SOCK_DGRAMなソケットは別ですが、SOCK_STREAMなconnect(2)って複数回呼び
出せるものでしたっけ?  non-blockingモードでEINPROGRESSが返ってきた場合
はselect(2)やpoll(2)みたいなので完了を検知するしかないような気もします。

localhostが相手の場合は、同じホスト内のことなのでEINPROGRESSとするまで
もなく、ECONNREFUSEDとできるので挙動が違うのでしょう。

-- 
神戸 隆博 / Takahiro Kambe