aboutsummaryrefslogtreecommitdiff
path: root/lib/ftp.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ftp.c')
-rw-r--r--lib/ftp.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index cdce06061..44c4f456d 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -879,6 +879,8 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
socklen_t sslen;
char hbuf[NI_MAXHOST];
struct sockaddr *sa=(struct sockaddr *)&ss;
+ struct sockaddr_in * const sa4 = (void *)sa;
+ struct sockaddr_in6 * const sa6 = (void *)sa;
char tmp[1024];
static const char mode[][5] = { "EPRT", "PORT" };
int rc;
@@ -974,9 +976,9 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
/* set port number to zero to make bind() pick "any" */
if(sa->sa_family == AF_INET)
- ((struct sockaddr_in *)sa)->sin_port=0;
+ sa4->sin_port = 0;
else
- ((struct sockaddr_in6 *)sa)->sin6_port =0;
+ sa6->sin6_port = 0;
if(sslen > (socklen_t)sizeof(ss))
sslen = sizeof(ss);
@@ -1027,10 +1029,10 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
switch (sa->sa_family) {
case AF_INET:
- port = ntohs(((struct sockaddr_in *)sa)->sin_port);
+ port = ntohs(sa4->sin_port);
break;
case AF_INET6:
- port = ntohs(((struct sockaddr_in6 *)sa)->sin6_port);
+ port = ntohs(sa6->sin6_port);
break;
default:
break;