-
- /* If we had to truncate, shrink the number to avoid fireworks */
- if (ret > sizeof(answer))
- ret = sizeof(answer);
-
- hp = (HEADER *)&answer[0];
- startptr = &answer[0]; /* start and end of buffer */
- endptr = &answer[ret];
- ptr = startptr + HFIXEDSZ; /* advance past header */
-
- for (qdcount = ntohs(hp->qdcount); qdcount--; ptr += ret + QFIXEDSZ) {
- if ((ret = dn_skipname(ptr, endptr)) < 0) {
- lprintf(9, "dn_skipname error\n");
- return(0);
- }
- }
-
- while(1) {
- memset(expanded_buf, 0, sizeof(expanded_buf));
- ret = dn_expand(startptr,
- endptr,
- ptr,
- expanded_buf,
- sizeof(expanded_buf)
- );
- if (ret < 0) break;
- ptr += ret;
-
- GETSHORT(type, ptr);
- ptr += INT16SZ + INT32SZ;
- GETSHORT(n, ptr);
-
- if (type != T_MX) {
- ptr += n;
+ else {
+
+ /* If we had to truncate, shrink the number to avoid fireworks */
+ if (ret > sizeof(answer))
+ ret = sizeof(answer);
+
+ startptr = &answer.bytes[0]; /* start and end of buffer */
+ endptr = &answer.bytes[ret];
+ ptr = startptr + HFIXEDSZ; /* advance past header */
+
+ for (qdcount = ntohs(answer.header.qdcount); qdcount--; ptr += ret + QFIXEDSZ) {
+ if ((ret = dn_skipname(ptr, endptr)) < 0) {
+ syslog(LOG_DEBUG, "dn_skipname error\n");
+ return(0);
+ }