[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>

Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)

12 messages 2010/07/02

[ruby-dev:41831] Re: [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2)

From: "Akinori MUSHA" <knu@...>
Date: 2010-07-06 09:05:53 UTC
List: ruby-dev #41831
At Tue, 6 Jul 2010 15:44:50 +0900,
Tanaka Akira wrote:
> 2010年7月2日12:20 Yui NARUSE <redmine@ruby-lang.org>:
>
> > この例外は socket の close(2) を呼んだ際に errno に ECONNRESET がセットされたときに発生します。
> > しかし、この挙動は POSIX 仕様外であり、FreeBSD 独自のものです。
>
> ちょっとした好奇心なんですが、close(fd) が ECONNRESET になった後、
> その fd は close されているんでしょうか、それともされていないんでしょうか。

 close されます。fd のチェック(EBADF なら終わり)、fd の解放、
実際の(ソケットならソケットの)クローズ処理、という流れなので、
どのエラーの場合も解放漏れはないと思います。

--
Akinori MUSHA / http://akinori.org/

In This Thread