Date: Fri, 4 Jun 1999 05:20:02 -0700 (PDT) From: Brian Somers <brian@Awfulhak.org> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/11988: recvmsg with a cmsghdr but no iovec is broken Message-ID: <199906041220.FAA77921@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/11988; it has been noted by GNATS. From: Brian Somers <brian@Awfulhak.org> To: Tony Finch <dot@dotat.at> Cc: Brian Somers <brian@Awfulhak.org>, FreeBSD-gnats-submit@freebsd.org Subject: Re: kern/11988: recvmsg with a cmsghdr but no iovec is broken Date: Fri, 04 Jun 1999 13:12:16 +0100 > Brian Somers writes: > > > > One other observation (a problem I suffered with for some time); you > > *must* have some sort of handshake to confirm that the descriptor has > > been received. If you call close(conn) while the descriptor is still > > in limbo (an mbuf) the descriptor will arrive at the other end ready > > to give you EBADF next time you use it. > > > > A simple read(child, &ch, 1) after sendmsg() and before the close(conn) > > and a write(3, "X", 1) after the recvmsg() will do the trick. > > AIUI that shouldn't be necessary: the f_count field should be > incremented while the descriptor is in transit so close()ing it should > not cause the resources to be released. If the receiver of the > descriptor gets EBADF because the sender close()d it while it was in > transit that is a bug (but a different one from the one that started > this PR). I've had a poke around 'cos I recalled seeing someone else spot this. The -current sendmsg man page mentions it in the BUGS section. > Tony. -- Brian <brian@Awfulhak.org> <brian@FreeBSD.org> <http://www.Awfulhak.org> <brian@OpenBSD.org> Don't _EVER_ lose your sense of humour ! <brian@uk.FreeBSD.org> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199906041220.FAA77921>