[mew-dist 26718] Re: ちょっぴり敗北宣言
Atsushi Onoe
onoe at example.com
2005年 12月 9日 (金) 18:18:45 JST
どうでもいいけど、
non-blocking connect() の仕様は、確かに
すぐにコネクションが確立できなければ EINPROGRESS を返す
ですが、これは「すぐに」に重点があるのであって、まさか成功しなければ
(例えば EBADF や EINVAL を返すべき場合にも)EINPROGRESS を返すという
意味じゃないでしょう。
つまり、"immediately" に返る限りは、(ETIMEDOUT 以外の)定義されたどの
エラーを返しても「仕様通り」です。
ECONNREFUSED が返ったときに誤動作するとすれば、単なるバグですね。
尾上
> remote サーバだと、non-blocking connect() した瞬間に「仕様通り」
> EINPROGRESS が返ります。
>
> FreeBSD/NetBSD で、local サーバに non-blocking connect() すると、
> すぐに TCP RST が返るため、ECONNREFUSED が返ります。(このため、
> この場合に限り、なんと IPv6 => IPv4 へフォールバックできます。)
>
> make-network-process() は仕様にない ECONNREFUSED なんて知らないので、接
> 続できない場合、nil を返すのでした。
Mew-dist メーリングリストの案内