From b8f1d71d2eb6874ae81a42fdef1855bd8eb6ac75 Mon Sep 17 00:00:00 2001
From: Eduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Date: Sat, 14 Jun 2008 15:48:07 -0500
Subject: [PATCH] dns.server: do work in separate thread

---
 extra/dns/server/server.factor | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/extra/dns/server/server.factor b/extra/dns/server/server.factor
index 7d52ff9e88..b556780805 100644
--- a/extra/dns/server/server.factor
+++ b/extra/dns/server/server.factor
@@ -1,8 +1,8 @@
 
-USING: kernel combinators sequences sets math
+USING: kernel combinators sequences sets math threads
        io.sockets unicode.case accessors
        combinators.cleave combinators.lib
-       newfx
+       newfx fry
        dns dns.util dns.misc ;
 
 IN: dns.server
@@ -204,15 +204,18 @@ DEFER: query->rrs
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-: loop ( -- )
-  socket receive
-  swap
+: (handle-request) ( byte-array addr-spec -- )
+  >r
   parse-message
   find-answer
   message->ba
-  swap
-  socket send
-  loop ;
+  r>
+  socket send ;
+
+: handle-request ( byte-array addr-spec -- )
+  '[ , , (handle-request) ] in-thread ;
+
+: loop ( -- ) socket receive handle-request loop ;
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!