From b9e127eb6c9721fc6e0fe62ea3e6d09bd6b3b573 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 15 Apr 2011 00:18:05 -0500 Subject: [PATCH] Refactor some duplication in DNS queries and move some parsing into its own word. --- extra/dns/dns.factor | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/extra/dns/dns.factor b/extra/dns/dns.factor index a51118e5fb..4e2aa75d93 100644 --- a/extra/dns/dns.factor +++ b/extra/dns/dns.factor @@ -334,33 +334,34 @@ M: TXT rdata>byte-array : ( -- inet4 ) dns-servers get random 53 ; -: dns-query ( query -- message ) - message>byte-array +: dns-query ( name type class -- message ) + message>byte-array udp-query parse-message ; -: dns-A-query ( domain -- message ) A IN dns-query ; -: dns-AAAA-query ( domain -- message ) AAAA IN dns-query ; -: dns-MX-query ( domain -- message ) MX IN dns-query ; -: dns-NS-query ( domain -- message ) NS IN dns-query ; -: dns-TXT-query ( domain -- message ) TXT IN dns-query ; +: dns-A-query ( name -- message ) A IN dns-query ; +: dns-AAAA-query ( name -- message ) AAAA IN dns-query ; +: dns-MX-query ( name -- message ) MX IN dns-query ; +: dns-NS-query ( name -- message ) NS IN dns-query ; +: dns-TXT-query ( name -- message ) TXT IN dns-query ; + +: read-TXT-strings ( byte-array -- strings ) + [ + binary [ + [ read1 [ read , t ] [ f ] if* ] loop + ] with-input-stream + ] { } make ; : TXT-message>strings ( message -- strings ) answer-section>> [ rdata>> - [ - binary [ - [ - read1 [ read , t ] [ f ] if* - ] loop - ] with-input-stream - ] { } make [ utf8 decode ] map + read-TXT-strings [ utf8 decode ] map ] map ; -: TXT. ( domain -- ) +: TXT. ( name -- ) dns-TXT-query TXT-message>strings [ [ write ] each nl ] each ; : reverse-lookup ( reversed-ip -- message ) - PTR IN dns-query ; + PTR IN dns-query ; : reverse-ipv4-lookup ( ip -- message ) ipv4>arpa reverse-lookup ;