dns: Minor cleanups
parent
69ef4430d5
commit
566c3db4b0
|
@ -47,15 +47,9 @@ TUPLE: entry time data ;
|
||||||
|
|
||||||
SYMBOL: NX
|
SYMBOL: NX
|
||||||
|
|
||||||
: cache-nx ( query ttl -- )
|
: cache-nx ( query ttl -- ) ttl->time NX entry boa table-add ;
|
||||||
ttl->time NX entry boa
|
|
||||||
table-add ;
|
|
||||||
|
|
||||||
: nx? ( obj -- ? )
|
: nx? ( obj -- ? ) dup entry? [ data>> NX = ] [ drop f ] if ;
|
||||||
dup entry?
|
|
||||||
[ data>> NX = ]
|
|
||||||
[ drop f ]
|
|
||||||
if ;
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
@ -72,27 +66,15 @@ SYMBOL: NX
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
: entry-expired? ( entry -- ? ) time>> time->ttl 0 <= ;
|
: expired? ( entry -- ? ) time>> time->ttl 0 <= ;
|
||||||
|
|
||||||
: cache-get ( query -- result )
|
: cache-get ( query -- result )
|
||||||
dup table-get ! query result
|
dup table-get ! query result
|
||||||
{
|
{
|
||||||
{
|
{ [ dup f = ] [ 2drop f ] } ! not in the cache
|
||||||
[ dup f = ] ! not in the cache
|
{ [ dup expired? ] [ drop table-rem f ] } ! here but expired
|
||||||
[ 2drop f ]
|
{ [ dup nx? ] [ 2drop NX ] } ! negative result cached
|
||||||
}
|
{ [ t ] [ query+entry->rrs ] } ! good to go
|
||||||
{
|
|
||||||
[ dup entry-expired? ] ! here but expired
|
|
||||||
[ drop table-rem f ]
|
|
||||||
}
|
|
||||||
{
|
|
||||||
[ dup nx? ] ! negative result has been cached
|
|
||||||
[ 2drop NX ]
|
|
||||||
}
|
|
||||||
{
|
|
||||||
[ t ]
|
|
||||||
[ query+entry->rrs ]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cond ;
|
cond ;
|
||||||
|
|
||||||
|
@ -114,22 +96,10 @@ SYMBOL: NX
|
||||||
: cache-add ( query rr -- )
|
: cache-add ( query rr -- )
|
||||||
over table-get ! query rr entry
|
over table-get ! query rr entry
|
||||||
{
|
{
|
||||||
{
|
{ [ dup f = ] [ drop rr->entry table-add ] }
|
||||||
[ dup f = ] ! not in the cache
|
{ [ dup nx? ] [ drop over table-rem rr->entry table-add ] }
|
||||||
[ drop rr->entry table-add ]
|
{ [ dup expired? ] [ drop rr->entry table-add ] }
|
||||||
}
|
{ [ t ] [ rot drop add-rr-to-entry ] }
|
||||||
{
|
|
||||||
[ dup nx? ]
|
|
||||||
[ drop over table-rem rr->entry table-add ]
|
|
||||||
}
|
|
||||||
{
|
|
||||||
[ dup entry-expired? ]
|
|
||||||
[ drop rr->entry table-add ]
|
|
||||||
}
|
|
||||||
{
|
|
||||||
[ t ]
|
|
||||||
[ rot drop add-rr-to-entry ]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cond ;
|
cond ;
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,8 @@ IN: dns.resolver
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
! Need to cache records even in the case of name error
|
||||||
|
|
||||||
: cache-message ( message -- message )
|
: cache-message ( message -- message )
|
||||||
dup dup rcode>> NAME-ERROR =
|
dup dup rcode>> NAME-ERROR =
|
||||||
[
|
[
|
||||||
|
|
Loading…
Reference in New Issue