Re: solisten()
Re: solisten()
- Subject: Re: solisten()
- From: Terry Lambert <email@hidden>
- Date: Fri, 9 Nov 2007 18:35:50 -0800
On Nov 9, 2007, at 1:37 PM, Michael Tuexen wrote:
On Nov 9, 2007, at 9:56 PM, Michael Smith wrote:
On Nov 9, 2007, at 12:13 PM, Michael Tuexen wrote:
why does solisten() in Leopard contain
if ((so->so_proto->pr_flags & PR_CONNREQUIRED) == 0) {
error = EOPNOTSUPP;
goto out;
}
This was not there in Tiger.
I do understand that you can not use listen() for UDP sockets, but
this should be handled in UDP specific code.
Without actually knowing why the change was made, I would point out
that saying "this is a UDP thing" specifically fails to notice that
the code in question basically says "if the protocol does not
require connections, you cannot listen for a connection".
Which is not OK for one2many style sockets for SCTP. SCTP is
connection
oriented but does implicit connection management for you in case of
one2many style sockets. To allow connections being accepted on these
sockets you need to call listen().
Actually, just the fact of having opened a socket in that case should
imply a listen.
I agree that it's inappropriate for protocols which *can* have a
connection, but do not require them, and would prefer a PR_CANLISTEN
or something similar, since listening implies specification of a queue
depth, which can be usedful.
But this shouldn't stop you from being able to do what you want.
Is it supposed to be possible to send without a connection? If so,
then the SS_ISCONNECTED check of so_state in sosendcheck(),
soreceive(), etc., might end up being problematic (this would be why
I'd have a preference for PR_CANLISTEN/PR_CANCONNECT vs.
PR_CONNREQUIRED, to accomodate protocols wher ethat's the case).
Another alternative would be to have separate socket types for
connection required vs. not sockets, though the software would then
have to treat them as distinct.
-- Terry
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden