From aa1708d0b586d29b1500a2ea24f0770b91993119 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Mon, 16 Jun 2008 16:29:49 -0500 Subject: [PATCH] dns.server: new networking code --- extra/dns/server/server.factor | 38 ++++++++-------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/extra/dns/server/server.factor b/extra/dns/server/server.factor index b556780805..3d59f0c3a6 100644 --- a/extra/dns/server/server.factor +++ b/extra/dns/server/server.factor @@ -1,6 +1,6 @@ -USING: kernel combinators sequences sets math threads - io.sockets unicode.case accessors +USING: kernel combinators sequences sets math threads namespaces continuations + debugger io io.sockets unicode.case accessors destructors combinators.cleave combinators.lib newfx fry dns dns.util dns.misc ; @@ -193,34 +193,14 @@ DEFER: query->rrs ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: (socket) ( -- vec ) V{ f } ; +: (handle-request) ( packet -- ) + [ [ find-answer ] with-message-bytes ] change-data respond ; -: socket ( -- socket ) (socket) 1st ; +: handle-request ( packet -- ) [ (handle-request) ] curry in-thread ; -: init-socket-on-port ( port -- ) - f swap 0 (socket) as-mutate ; +: receive-loop ( socket -- ) + [ receive-packet handle-request ] [ receive-loop ] bi ; -: init-socket ( -- ) 53 init-socket-on-port ; +: loop ( addr-spec -- ) + [ '[ , [ receive-loop ] with-disposal ] try ] [ loop ] bi ; -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: (handle-request) ( byte-array addr-spec -- ) - >r - parse-message - find-answer - message->ba - r> - socket send ; - -: handle-request ( byte-array addr-spec -- ) - '[ , , (handle-request) ] in-thread ; - -: loop ( -- ) socket receive handle-request loop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: start ( -- ) init-socket loop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -MAIN: start