From 2c82dfb51ba6923c2e7dcf3fac5109ae9da528f2 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Mon, 7 Mar 2016 13:59:17 -0800
Subject: [PATCH] io.sockets: Windows doesn't recognize 0.0.0.0. Add a method
 for resolve-localhost for Windows, and make the default ipv4 make-sockaddr
 use 127.0.0.1 since we are making a sockaddr for ipv4 anyway and 127.0.0.1 is
 cross-platform. Fixes #85.

---
 basis/io/sockets/sockets.factor         | 2 +-
 basis/io/sockets/windows/windows.factor | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/basis/io/sockets/sockets.factor b/basis/io/sockets/sockets.factor
index a9f8912136..fc9b7b44cb 100644
--- a/basis/io/sockets/sockets.factor
+++ b/basis/io/sockets/sockets.factor
@@ -101,7 +101,7 @@ M: ipv4 make-sockaddr ( inet -- sockaddr )
         AF_INET >>family
         swap
         [ port>> htons >>port ]
-        [ host>> "0.0.0.0" or ]
+        [ host>> "127.0.0.1" or ]
         [ inet-pton uint deref >>addr ] tri ;
 
 M: ipv4 parse-sockaddr ( sockaddr-in addrspec -- newaddrspec )
diff --git a/basis/io/sockets/windows/windows.factor b/basis/io/sockets/windows/windows.factor
index e45eef2393..9cdf24274a 100755
--- a/basis/io/sockets/windows/windows.factor
+++ b/basis/io/sockets/windows/windows.factor
@@ -325,3 +325,9 @@ M: windows (send) ( packet addrspec datagram -- )
 M: windows host-name
     256 [ <byte-array> dup ] keep gethostname socket-error
     ascii alien>string ;
+
+M: windows resolve-localhost
+    ipv6-supported?
+    { T{ ipv4 f "127.0.0.1" } T{ ipv6 f "::" } }
+    { T{ ipv4 f "127.0.0.1" } }
+    ? ;