Subject: Re: AF_LOCAL, SOCK_STREAM and poll(2)
To: None <tech-kern@netbsd.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-kern
Date: 09/17/2002 10:33:48
> For that particular project I could hack around it, but I am quite
> surprised that POLLHUP event was not generated, as the general BSD
> sockets API was generally followed by the UNIX domain.
POLLHUP was not part of the BSD sockets API; the Berkeley way was
sockets and select, the SV way was STREAMS and poll. Mixing sockets
and poll is miscegenation of a sort.
Of course, part of the problem is inherent to TCP, one of the few
design bugs in TCP. There is no way for a receiver to push "no more
receives" status back to the sender (at least not without accompanying
it with "no more sends"). I conjecture that this is least part of the
reason the API does not provide a non-abnormal way to indicate send
attempts on a connection that can't accept any further sends - there's
no send_without_sigpipe() call, if you will.
That's not to say it couldn't be done for AF_LOCAL sockets, of course,
nor even that it wouldn't be a good idea. Just perhaps that it's
understandable that it's not done.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse@rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B