]> granicus.if.org Git - curl/commitdiff
fix compiler warning
authorYang Tse <yangsita@gmail.com>
Fri, 24 Oct 2008 16:59:35 +0000 (16:59 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 24 Oct 2008 16:59:35 +0000 (16:59 +0000)
lib/connect.c
lib/ftp.c

index 9003aba074ddb362719d51ba0015802abe3948e5..1f6a262c8880954b0798f63293d55eb3c485dd99 100644 (file)
@@ -410,22 +410,22 @@ static CURLcode bindlocal(struct connectdata *conn,
     /* if a local port number is requested but no local IP, extract the
        address from the socket */
     if(af == AF_INET) {
-      memset(&me, 0, sizeof(struct sockaddr));
+      memset(&me, 0, sizeof(me));
       me.sin_family = AF_INET;
       me.sin_addr.s_addr = INADDR_ANY;
 
       sock = (struct sockaddr *)&me;
-      socksize = sizeof(struct sockaddr);
+      socksize = sizeof(me);
 
     }
 #ifdef ENABLE_IPV6
     else { /* AF_INET6 */
-      memset(&me6, 0, sizeof(struct sockaddr));
+      memset(&me6, 0, sizeof(me6));
       me6.sin6_family = AF_INET6;
       me6.sin6_addr = in6addr_any;
 
       sock = (struct sockaddr *)&me6;
-      socksize = sizeof(struct sockaddr);
+      socksize = sizeof(me6);
     }
 #endif
   }
@@ -437,22 +437,23 @@ static CURLcode bindlocal(struct connectdata *conn,
 
     /* Set port number to bind to, 0 makes the system pick one */
     if(sock->sa_family == AF_INET)
-      ((struct sockaddr_in *)sock)->sin_port = htons(port);
+      me.sin_port = htons(port);
 #ifdef ENABLE_IPV6
     else
-      ((struct sockaddr_in6 *)sock)->sin6_port = htons(port);
+      me6.sin6_port = htons(port);
 #endif
 
     if( bind(sockfd, sock, socksize) >= 0) {
       /* we succeeded to bind */
       struct Curl_sockaddr_storage add;
       socklen_t size = sizeof(add);
+      memset(&add, 0, sizeof(struct Curl_sockaddr_storage));
       if(getsockname(sockfd, (struct sockaddr *) &add, &size) < 0) {
         data->state.os_errno = error = SOCKERRNO;
         failf(data, "getsockname() failed with errno %d: %s",
               error, Curl_strerror(conn, error));
-       if(h)
-         Curl_resolv_unlock(data, h);
+        if(h)
+          Curl_resolv_unlock(data, h);
         return CURLE_INTERFACE_FAILED;
       }
       /* We re-use/clobber the port variable here below */
@@ -465,7 +466,7 @@ static CURLcode bindlocal(struct connectdata *conn,
       infof(data, "Local port: %d\n", port);
       conn->bits.bound = TRUE;
       if(h)
-       Curl_resolv_unlock(data, h);
+        Curl_resolv_unlock(data, h);
       return CURLE_OK;
     }
     if(--portnum > 0) {
@@ -764,6 +765,10 @@ singleipconnect(struct connectdata *conn,
   curl_socket_t sockfd;
   CURLcode res;
   const void *iptoprint;
+  struct sockaddr_in * const sa4 = (void *)&addr.sa_addr;
+#ifdef ENABLE_IPV6
+  struct sockaddr_in6 * const sa6 = (void *)&addr.sa_addr;
+#endif
 
   /*
    * The Curl_sockaddr_ex structure is basically libcurl's external API
@@ -804,9 +809,9 @@ singleipconnect(struct connectdata *conn,
     /* no socket, no connection */
     return CURL_SOCKET_BAD;
 
-#ifdef CURLRES_IPV6
+#ifdef ENABLE_IPV6
   if (conn->scope && (addr.family == AF_INET6))
-    ((struct sockaddr_in6 *)(&addr.sa_addr))->sin6_scope_id = conn->scope;
+    sa6->sin6_scope_id = conn->scope;
 #endif
 
   /* FIXME: do we have Curl_printable_address-like with struct sockaddr* as
@@ -823,10 +828,10 @@ singleipconnect(struct connectdata *conn,
   {
 #ifdef ENABLE_IPV6
     if(addr.family == AF_INET6)
-      iptoprint = &((const struct sockaddr_in6*)(&addr.sa_addr))->sin6_addr;
+      iptoprint = &sa6->sin6_addr;
     else
 #endif
-      iptoprint = &((const struct sockaddr_in*)(&addr.sa_addr))->sin_addr;
+      iptoprint = &sa4->sin_addr;
 
     if(Curl_inet_ntop(addr.family, iptoprint, addr_buf,
                       sizeof(addr_buf)) != NULL) {
index cdce060613bb16028e23ded24ce8ab8e854dd827..44c4f456dbb8645970f7647473cb4eb8a3e89b38 100644 (file)
--- 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;