diff -ur busybox-1.2.2.1/networking/dnsd.c busybox-1.2.2.1-patched/networking/dnsd.c
--- busybox-1.2.2.1/networking/dnsd.c	2006-10-24 15:21:17.000000000 -0500
+++ busybox-1.2.2.1-patched/networking/dnsd.c	2007-04-12 12:49:53.000000000 -0500
@@ -31,11 +31,11 @@
 
 #define is_daemon()  (flags&16)
 #define is_verbose() (flags&32)
-//#define DEBUG 
+#undef DEBUG 
 
 
 enum {
-	MAX_HOST_LEN = 16,      // longest host name allowed is 15
+	MAX_HOST_LEN = 41,      // longest host name allowed is 40
 	IP_STRING_LEN = 18,     // .xxx.xxx.xxx.xxx\0
 
 //must be strlen('.in-addr.arpa') larger than IP_STRING_LEN
@@ -229,19 +229,23 @@
 {
 	int i;
 	struct dns_entry *d = dnsentry;
+	char *p,*q;
+
+	q = (char *)&(qs[1]);
+	p = &(d->name[1]);
 
 	if(d) do {
 #ifdef DEBUG
 		if(qs && d) {
-			char *p,*q;
-			q = (char *)&(qs[1]);
-			p = &(d->name[1]);
 			fprintf(stderr, "\n%s: %d/%d p:%s q:%s %d", 
 				__FUNCTION__, strlen(p), (int)(d->name[0]), 
 				p, q, strlen(q));
 		}
 #endif
 		if (type == REQ_A) { 			/* search by host name */
+			p = &(d->name[1]);
+			if(strlen(q) != strlen(p))
+				continue;
 			for(i = 1; i <= (int)(d->name[0]); i++)
 				if(tolower(qs[i]) != d->name[i])
 					break;
@@ -398,13 +402,15 @@
 		fprintf(stderr,"fileconf: %s\n", fileconf);
 	}
 
-	if(is_daemon())
+	if(is_daemon()) {
 #ifdef BB_NOMMU
 		/* reexec for vfork() do continue parent */
 		vfork_daemon_rexec(1, 0, argc, argv, "-d");
 #else
 		bb_xdaemon(1, 0);
 #endif
+		daemonmode = 1;
+	}
 
 	dnsentryinit(is_verbose());
 
