Re: Review of gnio, round 1

Ryan Lortie wrote:
> Not sure I agree.  See shutdown() syscall.  The fact that this call
> exists means that the designers of [unix or tcp or whatever] went out of
> their way because they disagreed with you.

I can't think of any time I've used SHUT_RD or SHUT_WR rather than
SHUT_RDWR though...

>> Furthermore, its actually a problem in the ipv4 vs ipv6 magic case. The
>> current tcplistener code first tries to do an ipv6 socket and only if
>> that fails it tries an ipv4 socket. This makes sense on linux, were an
>> ipv6 socket also can accept ipv4 connections. However, this is not true
>> on many other unixes, where you need two sockets to handle both ipv4 and
>> ipv6. So in this case the listener object actually gets in the way, as
>> we'd need to create two listener objects to handle this (or make the
>> listener have two sockets).
> The 4-over-6 functionality (and even the setsockopt to disable it) is
> specified in some RFC somewhere.

Right, but it's disabled (at the kernel level) by default on most OSes
(everything but Linux?) because apparently the behavior is
underspecified. (Eg, see

So to avoid separate Linux-vs-everyone-else codepaths, it's probably
best to use IPV6_V6ONLY and manage v4 and v6 sockets separately everywhere.

-- Dan

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]