diff -ur djbdns-1.05/rbldns-data.c djbdns-1.05.exclude/rbldns-data.c
--- djbdns-1.05/rbldns-data.c	Sun Feb 11 22:11:45 2001
+++ djbdns-1.05.exclude/rbldns-data.c	Sat Feb  7 11:56:15 2004
@@ -51,6 +51,7 @@
   unsigned long u;
   unsigned int j;
   unsigned int k;
+  unsigned int exclude;
   char ch;
 
   umask(022);
@@ -90,9 +91,15 @@
           die_datatmp();
         break;
       case '0': case '1': case '2': case '3': case '4':
-      case '5': case '6': case '7': case '8': case '9':
+      case '5': case '6': case '7': case '8': case '9': case '!':
+	if(line.s[0] == '!') {
+	  j = 1;
+	  exclude = 1;
+	} else {
+	  j = 0;
+	  exclude = 0;
+	}
 	if (!stralloc_0(&line)) nomem();
-	j = 0;
 	if (!stralloc_copys(&tmp,"")) nomem();
 	for (;;) {
 	  k = scan_ulong(line.s + j,&u);
@@ -112,8 +119,13 @@
 	if (u > 32) u = 32;
 	ch = u;
 	if (!stralloc_catb(&tmp,&ch,1)) nomem();
-        if (cdb_make_add(&cdb,tmp.s,tmp.len,"",0) == -1)
-          die_datatmp();
+	if ( exclude ) {
+	  if (cdb_make_add(&cdb,tmp.s,tmp.len,"-",1) == -1)
+	    die_datatmp();
+	} else {
+	  if (cdb_make_add(&cdb,tmp.s,tmp.len,"+",1) == -1)
+	    die_datatmp();
+	}
 	break;
     }
   }
diff -ur djbdns-1.05/rbldns.c djbdns-1.05.exclude/rbldns.c
--- djbdns-1.05/rbldns.c	Sun Feb 11 22:11:45 2001
+++ djbdns-1.05.exclude/rbldns.c	Sat Feb  7 12:14:21 2004
@@ -47,6 +47,11 @@
     if (r) break;
   }
   if (!r) { response_nxdomain(); return 1; }
+  
+  if((dlen=cdb_datalen(&c)) == 1) {
+    if (cdb_read(&c,data,dlen,cdb_datapos(&c)) == -1 ) return 0;
+    if ( data[0] == '-' ) { response_nxdomain(); return 1; }
+  }
 
   r = cdb_find(&c,"",0);
   if (r == -1) return 0;
