Implement suggestion from Adam Slattery, (don't default to killing closing bug #1190.
[oweals/busybox.git] / nc.c
diff --git a/nc.c b/nc.c
index 8927103e0caa2732947fe4ca6935a0aeb61ad61c..5335872e5a7ca50b4e3fa5b410fbffb333d459b9 100644 (file)
--- a/nc.c
+++ b/nc.c
@@ -26,9 +26,9 @@
 
 */
 
-#include "busybox.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 #include <sys/types.h>
@@ -38,6 +38,7 @@
 #include <netdb.h>
 #include <sys/time.h>
 #include <sys/ioctl.h>
+#include "busybox.h"
 
 int nc_main(int argc, char **argv)
 {
@@ -79,17 +80,18 @@ int nc_main(int argc, char **argv)
        }
 
        if (do_listen) {
+               socklen_t addrlen = sizeof(address);
+
                if (listen(sfd, 1) < 0)
                        perror_msg_and_die("listen");
 
-               if ((tmpfd = accept(sfd, (struct sockaddr *) &address, &opt)) < 0)
+               if ((tmpfd = accept(sfd, (struct sockaddr *) &address, &addrlen)) < 0)
                        perror_msg_and_die("accept");
 
                close(sfd);
                sfd = tmpfd;
        } else {
-               if ((hostinfo = gethostbyname(argv[optind])) == NULL)
-                       error_msg_and_die("cannot resolve %s\n", argv[optind]);
+               hostinfo = xgethostbyname(argv[optind]);
 
                address.sin_addr = *(struct in_addr *) *hostinfo->h_addr_list;
                address.sin_port = htons(atoi(argv[optind+1]));