From e14a9ec0fb35bc16a51cba6de45de4dbb71377ad Mon Sep 17 00:00:00 2001
From: Eduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Date: Wed, 28 May 2008 23:09:19 -0500
Subject: [PATCH] dns.cache: cache-get* word

---
 extra/dns/cache/cache.factor | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/extra/dns/cache/cache.factor b/extra/dns/cache/cache.factor
index 75bbf9de9d..aeba35f29d 100644
--- a/extra/dns/cache/cache.factor
+++ b/extra/dns/cache/cache.factor
@@ -68,7 +68,7 @@ SYMBOL: NX
 
 : expired? ( entry -- ? ) time>> time->ttl 0 <= ;
 
-: cache-get ( query -- result )
+: cache-get* ( query -- rrs/NX/f )
   dup table-get               ! query result
     {
       { [ dup f = ]      [ 2drop f ]          } ! not in the cache
@@ -80,6 +80,15 @@ SYMBOL: NX
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+ERROR: name-error name ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: cache-get ( query -- rrs/f )
+  dup cache-get* dup NX = [ drop name>> name-error ] [ nip ] if ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
 : rr->entry ( rr -- entry )
   [ ttl>> ttl->time ] [ rdata>> {1} >vector ] bi entry boa ;