[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 メーリングリストの案内