[git commit] nslookup: return exitcode 1 on resolution errors

Denys Vlasenko vda.linux at googlemail.com
Wed Jan 9 12:38:57 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=6ca8e347fed8c24655df692f22694baf7c572770
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
nslookup_main                                        757     760      +3
send_queries                                        1690    1677     -13

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 networking/nslookup.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/networking/nslookup.c b/networking/nslookup.c
index cd3c00003..24e09d4f0 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -257,7 +257,7 @@ int nslookup_main(int argc, char **argv)
 struct ns {
 	const char *name;
 	len_and_sockaddr *lsa;
-	int failures;
+	//UNUSED: int failures;
 	int replies;
 };
 
@@ -320,6 +320,7 @@ struct globals {
 	struct query *query;
 	char *search;
 	smalluint have_search_directive;
+	smalluint exitcode;
 } FIX_ALIASING;
 #define G (*(struct globals*)bb_common_bufsiz1)
 #define INIT_G() do { \
@@ -593,7 +594,7 @@ static int send_queries(struct ns *ns)
 
 		/* Retry immediately on SERVFAIL */
 		if (rcode == 2) {
-			ns->failures++;
+			//UNUSED: ns->failures++;
 			if (servfail_retry) {
 				servfail_retry--;
 				write(pfd.fd, G.query[qn].query, G.query[qn].qlen);
@@ -612,9 +613,12 @@ static int send_queries(struct ns *ns)
 		if (rcode != 0) {
 			printf("** server can't find %s: %s\n",
 					G.query[qn].name, rcodes[rcode]);
+			G.exitcode = EXIT_FAILURE;
 		} else {
-			if (parse_reply(reply, recvlen) < 0)
+			if (parse_reply(reply, recvlen) < 0) {
 				printf("*** Can't find %s: Parse error\n", G.query[qn].name);
+				G.exitcode = EXIT_FAILURE;
+			}
 		}
 		bb_putchar('\n');
 		n_replies++;
@@ -988,7 +992,7 @@ int nslookup_main(int argc UNUSED_PARAM, char **argv)
 		free(G.query);
 	}
 
-	return EXIT_SUCCESS;
+	return G.exitcode;
 }
 
 #endif


More information about the busybox-cvs mailing list