From a7c0bddd4e5283139a6d9bef6012a2f8b046071b Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 29 Jan 2006 17:37:31 +0000 Subject: even less dependence on crappy arpa headers --- src/libndb/sysdnsquery.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/libndb') diff --git a/src/libndb/sysdnsquery.c b/src/libndb/sysdnsquery.c index d50a8312..8d3bf7b6 100644 --- a/src/libndb/sysdnsquery.c +++ b/src/libndb/sysdnsquery.c @@ -150,8 +150,8 @@ doquery(char *name, char *type) { int n, nstype; uchar *buf, *p; - HEADER *h; Ndbtuple *t; + int qdcount, ancount; if((nstype = name2type(type)) < 0){ werrstr("unknown dns type %s", type); @@ -171,16 +171,13 @@ doquery(char *name, char *type) werrstr("too much dns information"); return nil; } + + qdcount = (buf[4]<<8)|buf[5]; + ancount = (buf[6]<<8)|buf[7]; - h = (HEADER*)buf; - h->qdcount = ntohs(h->qdcount); - h->ancount = ntohs(h->ancount); - h->nscount = ntohs(h->nscount); - h->arcount = ntohs(h->arcount); - - p = buf+sizeof(HEADER); - p = skipquestion(buf, buf+n, p, h->qdcount); - p = unpack(buf, buf+n, p, &t, h->ancount); + p = buf+12; + p = skipquestion(buf, buf+n, p, qdcount); + p = unpack(buf, buf+n, p, &t, ancount); USED(p); return t; } -- cgit v1.2.3