diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-04-14 18:11:35 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-04-14 18:11:35 +0200 |
commit | db93b21ec9c7923dc2c419c81650b070b9ca751a (patch) | |
tree | 2d1be5e4cc3354cbf12902e30cff55751fbb7ed9 | |
parent | 55bc8e8826df8cf5c342f57e513d10ee6c632838 (diff) | |
download | busybox-w32-db93b21ec9c7923dc2c419c81650b070b9ca751a.tar.gz busybox-w32-db93b21ec9c7923dc2c419c81650b070b9ca751a.tar.bz2 busybox-w32-db93b21ec9c7923dc2c419c81650b070b9ca751a.zip |
nslookup: use xmalloc_sockaddr2dotted() instead of homegrown function
function old new delta
nslookup_main 2091 2007 -84
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | networking/nslookup.c | 48 |
1 files changed, 11 insertions, 37 deletions
diff --git a/networking/nslookup.c b/networking/nslookup.c index 50d91abbc..2e6569497 100644 --- a/networking/nslookup.c +++ b/networking/nslookup.c | |||
@@ -557,7 +557,11 @@ static int send_queries(struct ns *ns, struct query *queries, int n_queries) | |||
557 | xconnect(pfd.fd, &ns->lsa->u.sa, ns->lsa->len); | 557 | xconnect(pfd.fd, &ns->lsa->u.sa, ns->lsa->len); |
558 | ndelay_on(pfd.fd); | 558 | ndelay_on(pfd.fd); |
559 | } | 559 | } |
560 | write(pfd.fd, queries[qn].query, queries[qn].qlen); | 560 | if (write(pfd.fd, queries[qn].query, queries[qn].qlen) < 0) { |
561 | bb_perror_msg("write to '%s'", ns->name); | ||
562 | close(pfd.fd); | ||
563 | return -1; /* "no go, try next server" */ | ||
564 | } | ||
561 | } | 565 | } |
562 | 566 | ||
563 | t1 = t2; | 567 | t1 = t2; |
@@ -710,36 +714,6 @@ static struct query *add_query(struct query **queries, int *n_queries, | |||
710 | return new_q; | 714 | return new_q; |
711 | } | 715 | } |
712 | 716 | ||
713 | //FIXME: use xmalloc_sockaddr2dotted[_noport]() instead of sal2str() | ||
714 | |||
715 | #define SIZEOF_SAL2STR_BUF (INET6_ADDRSTRLEN + 1 + IFNAMSIZ + 1 + 5 + 1) | ||
716 | static char *sal2str(char buf[SIZEOF_SAL2STR_BUF], len_and_sockaddr *a) | ||
717 | { | ||
718 | char *p = buf; | ||
719 | |||
720 | #if ENABLE_FEATURE_IPV6 | ||
721 | if (a->u.sa.sa_family == AF_INET6) { | ||
722 | inet_ntop(AF_INET6, &a->u.sin6.sin6_addr, buf, SIZEOF_SAL2STR_BUF); | ||
723 | p += strlen(p); | ||
724 | |||
725 | if (a->u.sin6.sin6_scope_id) { | ||
726 | if (if_indextoname(a->u.sin6.sin6_scope_id, p + 1)) { | ||
727 | *p++ = '%'; | ||
728 | p += strlen(p); | ||
729 | } | ||
730 | } | ||
731 | } else | ||
732 | #endif | ||
733 | { | ||
734 | inet_ntop(AF_INET, &a->u.sin.sin_addr, buf, SIZEOF_SAL2STR_BUF); | ||
735 | p += strlen(p); | ||
736 | } | ||
737 | |||
738 | sprintf(p, "#%hu", ntohs(a->u.sin.sin_port)); | ||
739 | |||
740 | return buf; | ||
741 | } | ||
742 | |||
743 | int nslookup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 717 | int nslookup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
744 | int nslookup_main(int argc UNUSED_PARAM, char **argv) | 718 | int nslookup_main(int argc UNUSED_PARAM, char **argv) |
745 | { | 719 | { |
@@ -862,10 +836,10 @@ int nslookup_main(int argc UNUSED_PARAM, char **argv) | |||
862 | 836 | ||
863 | for (rc = 0; rc < G.serv_count; rc++) { | 837 | for (rc = 0; rc < G.serv_count; rc++) { |
864 | int c = send_queries(&G.server[rc], queries, n_queries); | 838 | int c = send_queries(&G.server[rc], queries, n_queries); |
865 | if (c < 0) | ||
866 | bb_perror_msg_and_die("can't send queries"); | ||
867 | if (c > 0) | 839 | if (c > 0) |
868 | break; | 840 | break; |
841 | /* c = 0: timed out waiting for replies */ | ||
842 | /* c < 0: error (message already printed) */ | ||
869 | rc++; | 843 | rc++; |
870 | if (rc >= G.serv_count) { | 844 | if (rc >= G.serv_count) { |
871 | fprintf(stderr, | 845 | fprintf(stderr, |
@@ -875,10 +849,10 @@ int nslookup_main(int argc UNUSED_PARAM, char **argv) | |||
875 | } | 849 | } |
876 | 850 | ||
877 | printf("Server:\t\t%s\n", G.server[rc].name); | 851 | printf("Server:\t\t%s\n", G.server[rc].name); |
878 | { | 852 | printf("Address:\t%s\n", xmalloc_sockaddr2dotted(&G.server[rc].lsa->u.sa)); |
879 | char buf[SIZEOF_SAL2STR_BUF]; | 853 | /* In "Address", bind-utils-9.11.3 show port after a hash: "1.2.3.4#53" */ |
880 | printf("Address:\t%s\n", sal2str(buf, G.server[rc].lsa)); | 854 | /* Should we do the same? */ |
881 | } | 855 | |
882 | if (opts & OPT_stats) { | 856 | if (opts & OPT_stats) { |
883 | printf("Replies:\t%d\n", G.server[rc].replies); | 857 | printf("Replies:\t%d\n", G.server[rc].replies); |
884 | printf("Failures:\t%d\n", G.server[rc].failures); | 858 | printf("Failures:\t%d\n", G.server[rc].failures); |