SKIP_NC_EXTRA (const int execparam = 0;)
USE_NC_EXTRA (char **execparam = NULL;)
struct sockaddr_in address;
- struct hostent *hostinfo;
fd_set readfds, testfds;
int opt; /* must be signed (getopt returns -1) */
if (!cfd) {
sfd = xsocket(AF_INET, SOCK_STREAM, 0);
fcntl(sfd, F_SETFD, FD_CLOEXEC);
- opt = 1;
- setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
+ setsockopt_reuseaddr(sfd);
address.sin_family = AF_INET;
// Set local port.
if (!lport) {
socklen_t len = sizeof(address);
- getsockname(sfd, &address, &len);
+ getsockname(sfd, (struct sockaddr *) &address, &len);
fdprintf(2, "%d\n", SWAP_BE16(address.sin_port));
}
repeatyness:
if (!execparam) close(sfd);
} else {
+ struct hostent *hostinfo;
hostinfo = xgethostbyname(argv[0]);
address.sin_addr = *(struct in_addr *) *hostinfo->h_addr_list;
address.sin_port = bb_lookup_port(argv[1], "tcp", 0);
- if (connect(sfd, (struct sockaddr *) &address, sizeof(address)) < 0)
- bb_perror_msg_and_die("connect");
+ xconnect(sfd, (struct sockaddr *) &address, sizeof(address));
cfd = sfd;
}
}