dns.resolver: cache-message moved to dns. Also some minor cleanups.
parent
f66fd9a129
commit
f59cc01d9a
|
@ -6,34 +6,6 @@ IN: dns.resolver
|
|||
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
! Need to cache records even in the case of name error
|
||||
|
||||
: cache-message ( message -- message )
|
||||
dup dup rcode>> NAME-ERROR =
|
||||
[
|
||||
[ question-section>> 1st ]
|
||||
[ authority-section>> [ type>> SOA = ] filter random ttl>> ]
|
||||
bi
|
||||
cache-nx
|
||||
]
|
||||
[
|
||||
{
|
||||
[ answer-section>> cache-add-rrs ]
|
||||
[ authority-section>> cache-add-rrs ]
|
||||
[ additional-section>> cache-add-rrs ]
|
||||
}
|
||||
cleave
|
||||
]
|
||||
if ;
|
||||
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
! Ask and cache the records
|
||||
|
||||
: ask* ( message -- message ) ask cache-message ;
|
||||
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
: canonical/cache ( name -- name )
|
||||
dup CNAME IN query boa cache-get dup vector? ! name result ?
|
||||
[ nip 1st rdata>> ]
|
||||
|
@ -43,26 +15,17 @@ IN: dns.resolver
|
|||
: name->ip/cache ( name -- ip )
|
||||
canonical/cache
|
||||
dup A IN query boa cache-get ! name result
|
||||
{
|
||||
{
|
||||
[ dup NX = ]
|
||||
[ 2drop f ]
|
||||
{ [ dup NX = ] [ 2drop f ] }
|
||||
{ [ dup f = ] [ 2drop f ] }
|
||||
{ [ t ] [ nip random rdata>> ] }
|
||||
}
|
||||
{
|
||||
[ dup f = ]
|
||||
[ 2drop f ]
|
||||
}
|
||||
{
|
||||
[ t ]
|
||||
[ nip random rdata>> ]
|
||||
}
|
||||
}
|
||||
cond ;
|
||||
cond ;
|
||||
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
: canonical/server ( name -- name )
|
||||
dup CNAME IN query boa query->message ask* answer-section>>
|
||||
dup CNAME IN query boa query->message ask cache-message answer-section>>
|
||||
[ type>> CNAME = ] filter dup empty? not
|
||||
[ nip 1st rdata>> ]
|
||||
[ drop ]
|
||||
|
@ -70,7 +33,7 @@ IN: dns.resolver
|
|||
|
||||
: name->ip/server ( name -- ip )
|
||||
canonical/server
|
||||
dup A IN query boa query->message ask* answer-section>>
|
||||
dup A IN query boa query->message ask cache-message answer-section>>
|
||||
[ type>> A = ] filter dup empty? not
|
||||
[ nip random rdata>> ]
|
||||
[ 2drop f ]
|
||||
|
|
Loading…
Reference in New Issue