[Haskell-cafe] Binding a socket to all interfaces

Kazu Yamamoto ( 山本和彦 ) kazu at iij.ad.jp
Wed Sep 21 12:38:11 CEST 2011


Hello,

My fix intended that Haskell code behaves the same in various
environments. That is, one socket catches both IPv4 and IPv6. And the
fix works even in both IPv4-only env and IPv6-only env.

Johan's observation is correct. Network.listenOn is alreay fixed but
Network.Socket.listen, which Warp relies on, is not fixed yet. I will
try to fix it. When the next version of the network library will be
released, the problem will disappear, I hope.

--Kazu

> Hi Michael,
> 
> Kazu recently fixed this (in the stable branch on GitHub) in Network.listenOn
> but perhaps the more basic Network.Socket.listen should also be changed. Lets
> discuss what's the right thing to do in this thread.
> 
> On Wed, Sep 21, 2011 at 1:38 PM, Michael Snoyman <michael at snoyman.com> wrote:
> 
>> Hi,
>> 
>> One of the recurring issues that comes up in Warp is binding to IPv4
>> versus IPv6 hosts. Our current code is available at [1]. It was
>> updated to look like that in this commit [2] in order to support both
>> IPv4 and IPv6 hosts by default. However, now it seems than on Debian
>> and FreeBSD, it *only* responds to IPv6 by default[3][4]. I'm frankly
>> stumped at this point on how to have our cake and eat it too.
>> 
>> Does anyone have an idea of the correct incantation to get Warp to do
>> the Right Thing(tm) here? And if not, is there any advice on sensible
>> default behavior? I'm considering allowing a few special host values:
>> 
>> * "*" (default, what we have now): Make this bind to IPv4
>> * "ipv4": Again, bind to IPv4. Guaranteed not to change in the future
>> * "ipv6": Bind to IPv6.
>> 
>> Michael
>> 
>> [1] https://github.com/yesodweb/wai/blob/master/warp/Network/Wai/Handler/
> Warp.hs#L119
>> [2] https://github.com/snoyberg/warp/commit/
> 02c1396c86e3fceb48cbe7df58cb631c804e24d4
>> [3] https://github.com/snoyberg/warp/issues/9
>> [4] http://stackoverflow.com/questions/7486257/
> yesod-devel-server-only-listening-on-ipv6
>> 
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 



More information about the Haskell-Cafe mailing list