diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-01-11 16:50:23 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-01-11 16:50:23 +0000 |
commit | 8e9ccba371480fb1fb3da9235fabdbb7861523c3 (patch) | |
tree | 369636a4a765a571e1c6a6ecf2a52ca0131cc90e /networking/ftpgetput.c | |
parent | 085231fbbad159d2275cbd5ecdcf4732512bb80f (diff) | |
download | busybox-w32-8e9ccba371480fb1fb3da9235fabdbb7861523c3.tar.gz busybox-w32-8e9ccba371480fb1fb3da9235fabdbb7861523c3.tar.bz2 busybox-w32-8e9ccba371480fb1fb3da9235fabdbb7861523c3.zip |
ipv6-ization efforts continue. Few bugs are found,
unknown number likely introduced...
Diffstat (limited to 'networking/ftpgetput.c')
-rw-r--r-- | networking/ftpgetput.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/networking/ftpgetput.c b/networking/ftpgetput.c index 9e64ff98a..9086cb126 100644 --- a/networking/ftpgetput.c +++ b/networking/ftpgetput.c | |||
@@ -19,7 +19,7 @@ | |||
19 | typedef struct ftp_host_info_s { | 19 | typedef struct ftp_host_info_s { |
20 | char *user; | 20 | char *user; |
21 | char *password; | 21 | char *password; |
22 | struct sockaddr_in *s_in; | 22 | struct len_and_sockaddr *lsa; |
23 | } ftp_host_info_t; | 23 | } ftp_host_info_t; |
24 | 24 | ||
25 | static char verbose_flag; | 25 | static char verbose_flag; |
@@ -88,8 +88,8 @@ static int xconnect_ftpdata(ftp_host_info_t *server, char *buf) | |||
88 | *buf_ptr = '\0'; | 88 | *buf_ptr = '\0'; |
89 | port_num += xatoul_range(buf_ptr + 1, 0, 255) * 256; | 89 | port_num += xatoul_range(buf_ptr + 1, 0, 255) * 256; |
90 | 90 | ||
91 | server->s_in->sin_port = htons(port_num); | 91 | set_port(server->lsa, htons(port_num)); |
92 | return xconnect_tcp_v4(server->s_in); | 92 | return xconnect_stream(server->lsa); |
93 | } | 93 | } |
94 | 94 | ||
95 | static FILE *ftp_login(ftp_host_info_t *server) | 95 | static FILE *ftp_login(ftp_host_info_t *server) |
@@ -98,9 +98,9 @@ static FILE *ftp_login(ftp_host_info_t *server) | |||
98 | char buf[512]; | 98 | char buf[512]; |
99 | 99 | ||
100 | /* Connect to the command socket */ | 100 | /* Connect to the command socket */ |
101 | control_stream = fdopen(xconnect_tcp_v4(server->s_in), "r+"); | 101 | control_stream = fdopen(xconnect_stream(server->lsa), "r+"); |
102 | if (control_stream == NULL) { | 102 | if (control_stream == NULL) { |
103 | /* Extremely unlikely */ | 103 | /* fdopen failed - extremely unlikely */ |
104 | bb_perror_nomsg_and_die(); | 104 | bb_perror_nomsg_and_die(); |
105 | } | 105 | } |
106 | 106 | ||
@@ -304,7 +304,6 @@ int ftpgetput_main(int argc, char **argv) | |||
304 | const char *port = "ftp"; | 304 | const char *port = "ftp"; |
305 | /* socket to ftp server */ | 305 | /* socket to ftp server */ |
306 | FILE *control_stream; | 306 | FILE *control_stream; |
307 | struct sockaddr_in s_in; | ||
308 | /* continue previous transfer (-c) */ | 307 | /* continue previous transfer (-c) */ |
309 | ftp_host_info_t *server; | 308 | ftp_host_info_t *server; |
310 | 309 | ||
@@ -347,12 +346,10 @@ int ftpgetput_main(int argc, char **argv) | |||
347 | /* We want to do exactly _one_ DNS lookup, since some | 346 | /* We want to do exactly _one_ DNS lookup, since some |
348 | * sites (i.e. ftp.us.debian.org) use round-robin DNS | 347 | * sites (i.e. ftp.us.debian.org) use round-robin DNS |
349 | * and we want to connect to only one IP... */ | 348 | * and we want to connect to only one IP... */ |
350 | server->s_in = &s_in; | 349 | server->lsa = host2sockaddr(argv[0], bb_lookup_port(port, "tcp", 21)); |
351 | bb_lookup_host(&s_in, argv[0]); | ||
352 | s_in.sin_port = bb_lookup_port(port, "tcp", 21); | ||
353 | if (verbose_flag) { | 350 | if (verbose_flag) { |
354 | printf("Connecting to %s[%s]:%d\n", | 351 | printf("Connecting to %s [%s]\n", argv[0], |
355 | argv[0], inet_ntoa(s_in.sin_addr), ntohs(s_in.sin_port)); | 352 | xmalloc_sockaddr2dotted(&server->lsa->sa, server->lsa->len)); |
356 | } | 353 | } |
357 | 354 | ||
358 | /* Connect/Setup/Configure the FTP session */ | 355 | /* Connect/Setup/Configure the FTP session */ |