xconnect is non-conforming to "xfunc like libc" rule. Fixing
This commit is contained in:
parent
940b2e4b73
commit
1457915afc
@ -452,7 +452,9 @@ extern struct hostent *xgethostbyname(const char *name);
|
|||||||
extern struct hostent *xgethostbyname2(const char *name, int af);
|
extern struct hostent *xgethostbyname2(const char *name, int af);
|
||||||
extern int create_icmp_socket(void);
|
extern int create_icmp_socket(void);
|
||||||
extern int create_icmp6_socket(void);
|
extern int create_icmp6_socket(void);
|
||||||
extern int xconnect(struct sockaddr_in *s_addr);
|
extern void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen);
|
||||||
|
extern int xconnect_tcp_v4(struct sockaddr_in *s_addr);
|
||||||
|
|
||||||
extern unsigned short bb_lookup_port(const char *port, const char *protocol, unsigned short default_port);
|
extern unsigned short bb_lookup_port(const char *port, const char *protocol, unsigned short default_port);
|
||||||
extern void bb_lookup_host(struct sockaddr_in *s_in, const char *host);
|
extern void bb_lookup_host(struct sockaddr_in *s_in, const char *host);
|
||||||
|
|
||||||
|
@ -49,14 +49,20 @@ void bb_lookup_host(struct sockaddr_in *s_in, const char *host)
|
|||||||
memcpy(&(s_in->sin_addr), he->h_addr_list[0], he->h_length);
|
memcpy(&(s_in->sin_addr), he->h_addr_list[0], he->h_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
int xconnect(struct sockaddr_in *s_addr)
|
void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
|
||||||
|
{
|
||||||
|
if (connect(s, s_addr, addrlen) < 0) {
|
||||||
|
if (ENABLE_FEATURE_CLEAN_UP) close(s);
|
||||||
|
if (s_addr->sa_family == AF_INET)
|
||||||
|
bb_perror_msg_and_die("unable to connect to remote host (%s)",
|
||||||
|
inet_ntoa(((struct sockaddr_in *)s_addr)->sin_addr));
|
||||||
|
bb_perror_msg_and_die("unable to connect to remote host");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int xconnect_tcp_v4(struct sockaddr_in *s_addr)
|
||||||
{
|
{
|
||||||
int s = xsocket(AF_INET, SOCK_STREAM, 0);
|
int s = xsocket(AF_INET, SOCK_STREAM, 0);
|
||||||
if (connect(s, (struct sockaddr *)s_addr, sizeof(struct sockaddr_in)) < 0)
|
xconnect(s, (struct sockaddr*) s_addr, sizeof(*s_addr));
|
||||||
{
|
|
||||||
if (ENABLE_FEATURE_CLEAN_UP) close(s);
|
|
||||||
bb_perror_msg_and_die("unable to connect to remote host (%s)",
|
|
||||||
inet_ntoa(s_addr->sin_addr));
|
|
||||||
}
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ static int xconnect_ftpdata(ftp_host_info_t *server, const char *buf)
|
|||||||
port_num += xatoul_range(buf_ptr + 1, 0, 255) * 256;
|
port_num += xatoul_range(buf_ptr + 1, 0, 255) * 256;
|
||||||
|
|
||||||
server->s_in->sin_port = htons(port_num);
|
server->s_in->sin_port = htons(port_num);
|
||||||
return xconnect(server->s_in);
|
return xconnect_tcp_v4(server->s_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
static FILE *ftp_login(ftp_host_info_t *server)
|
static FILE *ftp_login(ftp_host_info_t *server)
|
||||||
@ -76,7 +76,7 @@ static FILE *ftp_login(ftp_host_info_t *server)
|
|||||||
char buf[512];
|
char buf[512];
|
||||||
|
|
||||||
/* Connect to the command socket */
|
/* Connect to the command socket */
|
||||||
control_stream = fdopen(xconnect(server->s_in), "r+");
|
control_stream = fdopen(xconnect_tcp_v4(server->s_in), "r+");
|
||||||
if (control_stream == NULL) {
|
if (control_stream == NULL) {
|
||||||
bb_perror_msg_and_die("cannot open control stream");
|
bb_perror_msg_and_die("cannot open control stream");
|
||||||
}
|
}
|
||||||
|
@ -639,7 +639,7 @@ int telnet_main(int argc, char** argv)
|
|||||||
s_in.sin_port = bb_lookup_port((argc == 3) ? argv[2] : "telnet", "tcp", 23);
|
s_in.sin_port = bb_lookup_port((argc == 3) ? argv[2] : "telnet", "tcp", 23);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G.netfd = xconnect(&s_in);
|
G.netfd = xconnect_tcp_v4(&s_in);
|
||||||
|
|
||||||
setsockopt(G.netfd, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof one);
|
setsockopt(G.netfd, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof one);
|
||||||
|
|
||||||
|
@ -585,7 +585,7 @@ static FILE *open_socket(struct sockaddr_in *s_in)
|
|||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
fp = fdopen(xconnect(s_in), "r+");
|
fp = fdopen(xconnect_tcp_v4(s_in), "r+");
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
bb_perror_msg_and_die("fdopen");
|
bb_perror_msg_and_die("fdopen");
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ static time_t askremotedate(const char *host)
|
|||||||
alarm(10);
|
alarm(10);
|
||||||
signal(SIGALRM, socket_timeout);
|
signal(SIGALRM, socket_timeout);
|
||||||
|
|
||||||
fd = xconnect(&s_in);
|
fd = xconnect_tcp_v4(&s_in);
|
||||||
|
|
||||||
if (safe_read(fd, (void *)&nett, 4) != 4) /* read time from server */
|
if (safe_read(fd, (void *)&nett, 4) != 4) /* read time from server */
|
||||||
bb_error_msg_and_die("%s did not send the complete time", host);
|
bb_error_msg_and_die("%s did not send the complete time", host);
|
||||||
|
Loading…
Reference in New Issue
Block a user