From e19df707da51887e1ec9dc70a9c9c336994d5b66 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Mon, 23 May 2016 15:28:51 -0700
Subject: [PATCH] io.servers: Fix a regression where we couldn't listen on
 several ports at once.

---
 basis/io/servers/servers-tests.factor | 23 ++++++++++++++++++++---
 basis/io/servers/servers.factor       |  2 +-
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/basis/io/servers/servers-tests.factor b/basis/io/servers/servers-tests.factor
index 04004ea9b0..bea66ad07a 100644
--- a/basis/io/servers/servers-tests.factor
+++ b/basis/io/servers/servers-tests.factor
@@ -1,6 +1,6 @@
-USING: accessors calendar concurrency.promises fry io
-io.encodings.ascii io.servers
-io.servers.private io.sockets kernel namespaces
+USING: accessors arrays calendar concurrency.promises fry io
+io.encodings.ascii io.encodings.utf8 io.servers
+io.servers.private io.sockets kernel namespaces scratchpad
 sequences threads tools.test ;
 IN: io.servers
 
@@ -53,3 +53,20 @@ ipv6-supported? [
         [ inet6? ] any?
     ] unit-test
 ] unless
+
+
+! Test that we can listen on several ports at once.
+TUPLE: my-threaded-server < threaded-server ;
+
+{ } [
+    utf8 my-threaded-server new-threaded-server
+        "127.0.0.1" 0 <inet4>
+        "127.0.0.1" 0 <inet4>
+        2array >>insecure
+
+        "127.0.0.1" 0 <inet4>
+        "127.0.0.1" 0 <inet4>
+        2array >>secure
+
+        start-server stop-server
+] unit-test
\ No newline at end of file
diff --git a/basis/io/servers/servers.factor b/basis/io/servers/servers.factor
index 7cbb69097e..0a264824f6 100755
--- a/basis/io/servers/servers.factor
+++ b/basis/io/servers/servers.factor
@@ -77,7 +77,7 @@ M: inet6 >insecure 1array ;
 M: local >insecure 1array ;
 M: integer >insecure internet-server 1array ;
 M: string >insecure internet-server 1array ;
-M: array >insecure [ >insecure ] map ;
+M: array >insecure [ >insecure ] map concat ;
 M: f >insecure ;
 
 : >secure ( addrspec -- addrspec' )