svn commit: r198781 - head/lib/libc/sys

Colin Percival cperciva at freebsd.org
Mon Nov 2 18:20:25 UTC 2009


Robert Watson wrote:
> On Mon, 2 Nov 2009, Colin Percival wrote:
>>  Attempt to reduce accidental foot-shooting by pointing out that
>>  accept(2)ed sockets do not necessarily inherit O_NONBLOCK from
>>  listening sockets on non-FreeBSD platforms.
> 
> I wonder how much trouble we should go to to document bugs in other
> systems as non-portabilities for features that work in our system.

I don't think there's any simple rule to apply here except "use common
sense".  One can argue that FreeBSD man pages exist for the purpose of
documenting FreeBSD; but I'd also like to think that FreeBSD is a good
development platform for writing portable applications, so alerting our
users to potentially non-portable code certainly has some value.  (And
there are many other examples of "portable programs should not..." in
our man pages, not just the one I added.)

The non-portability I just documented was a particularly obnoxious one,
since in event-driven code it can go unnoticed for a long time -- as I
just recently discovered.

> I think a more general caution for accept(2) might instead be:
> 
> BUGS
>     The inheritence of socket options from a listen socket to a newly
>     accepted socket is inconsistent across protocols, and non-portable.

I was originally going to write it that way, but when I looked at the
existing text I saw that it only mentioned inheriting O_NONBLOCK and said
nothing about other options -- so I figured that it was appropriate to
follow suit and only mention O_NONBLOCK in saying what was non-portable.

-- 
Colin Percival
Security Officer, FreeBSD | freebsd.org | The power to serve
Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid


More information about the svn-src-head mailing list