2011/7/22 Yui NARUSE <naruse / airemix.jp>: > > Mac OS X と FreeBSD にて、存在しない fd を close してしまう問題について、 > 現在 r32598 で応急処置が施されていますが、根本的な原因について、 > sys/kern/uipc_socket.c を見るに、 > http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/uipc_socket.c?rev=1.340.2.6.2.1;content-type=text%2Fplain;only_with_tag=RELENG_8_2_0_RELEASE > > * Process one or more MT_CONTROL mbufs present before any data mbufs > * in the first mbuf chain on the socket buffer. If MSG_PEEK, we > * just copy the data; if !MSG_PEEK, we call into the protocol to > * perform externalization (or freeing if controlp == NULL). > > とあるので、recvmsg に MSG_PEEK を与えた場合は invalid なものが返ってくると思うのですが。 おぉ、素晴らしい。 ではとりあえず FreeBSD と MacOS X で MSG_PEEK のとき、という条件ですかね。 -- [田中 哲][たなか あきら][Tanaka Akira]