In article <20050728015209.0F30DC6734 / lithium.ruby-lang.org>,
  matz / ruby-lang.org (matz) writes:

> matz        Thu, 28 Jul 2005 10:52:05 +0900
>
>   Modified files:        (Branch: ruby_1_8)
>     ruby/ext/socket:
>       socket.c
>     ruby:
>       version.h
>     ruby:
>       ChangeLog
>   Log:
>     * ext/socket/socket.c (ruby_connect): break immediately if a
>       socket is non-blocking.  [ruby-talk:111654]

こういうように、nonblocking かどうかで挙動を変えるのは、socket をデフォ
ルトで nonblocking にしようとしたときに非互換の原因になるのであまりよ
くないんじゃないか、と思っています。

また、Windows では F_GETFL がなくて、メソッドが呼ばれる前に
nonblocking になっていたかどうかはわからないという話ですし。

connect_nonblock とか新しいメソッドを作ったほうがいいんじゃないでしょ
うか。そのメソッドの中で nonblocking にすることにすれば使う方としても
fcntl を使わないでいいぶん簡単ですし、デフォルトで nonblocking にして
も挙動が変化しないですし、F_GETFL も必要なくなりますし。

名前が気に入らないかもしれませんが。
-- 
[田中 哲][たなか あきら][Tanaka Akira]