nslookup: handle replies without RRs
Under some circumstances, a DNS reply might contain no resource records, e.g. when a valid domain is queried that does not have records of the requested type. Example with nslookup from BIND dnsutils: $ nslookup -q=SRV example.org Server: 10.11.12.13 Address: 10.11.12.13#53 Non-authoritative answer: *** Can't find example.org: No answer Currently the busybox nslookup applet simply prints nothing after the "Non-authoritative answer:" line in the same situation. This change modifies nslookup to either print "Parse error" or "No answer" diagnostics, depending on the parse_reply() return value. function old new delta send_queries 1676 1711 +35 Signed-off-by: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
caf5ee0dd9
commit
8c3b520d4f
@ -615,9 +615,15 @@ static int send_queries(struct ns *ns)
|
||||
G.query[qn].name, rcodes[rcode]);
|
||||
G.exitcode = EXIT_FAILURE;
|
||||
} else {
|
||||
if (parse_reply(reply, recvlen) < 0) {
|
||||
switch (parse_reply(reply, recvlen)) {
|
||||
case -1:
|
||||
printf("*** Can't find %s: Parse error\n", G.query[qn].name);
|
||||
G.exitcode = EXIT_FAILURE;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
printf("*** Can't find %s: No answer\n", G.query[qn].name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
bb_putchar('\n');
|
||||
|
Loading…
Reference in New Issue
Block a user