#2391 Network.listenOn (PortNumber n) Sometimes Picks IPv6
wnoise at ofb.net
Mon Jul 21 08:54:33 EDT 2008
On 2008-07-21, Curt Sampson <cjs at starling-software.com> wrote:
> On 2008-07-21 10:09 +0000 (Mon), Aaron Denney wrote:
>> Basically, my position is that listenOn is the wrong interface -- it
>> should take the host addresses as well as the port.
> Well, perhaps the idea there was that if you wanted to start doing this,
> you should be using Network.Socket instead of Network, anyway.
Sounds reasonable to me -- my prefered solution would be to deprecate
listenOn. But I don't have code using it. OTOH, the stability is
"provisional". I think there is room for an easier to use interface
than the full Network.Socket, but I don't think listenOn is it. Perhaps
more like a parameterizable skeleton server?
>> The ports are the same namespace -- it shouldn't matter (much) whether
>> TCP is running over IPv4 or IPv6.
> If you bind by hostname (e.g., "localhost") they have separate
> namespaces. I suppose you could take only addresses, but then you need
> some way to construct them, and before you know it you're starting to
> get as complex as Network.Socket.
The same port will of course be connected differently on different
machines. I think we're quibling over the meaning of namespace here,
but e.g. port 22 is for ssh on both IPv4 and IPv6.
> I think at this point I'm preferring the simple thing: just go for
> PortNumber Int and PortNumber6 Int data constructors, and if you want to
> do better than that, use Network.Socket.
And do we also have both Service and Service6 constructors? The same
exact issue arises.
More information about the Libraries