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 ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!