Change the ai_addrlen type of struct addrinfo from size_t to socklen_t, per RFC 3493.
authorYang Tse <yangsita@gmail.com>
Fri, 14 Jul 2006 10:30:44 +0000 (10:30 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 14 Jul 2006 10:30:44 +0000 (10:30 +0000)
ares/ares_ipv6.h
lib/connect.c
lib/hostip.h
lib/hostip4.c

index a6d980f..afc9832 100644 (file)
@@ -40,14 +40,14 @@ struct sockaddr_in6
 #endif
 
 #ifndef HAVE_STRUCT_ADDRINFO
-struct addrinfo
+struct addrinfo 
 {
-  int ai_flags;
-  int ai_family;
-  int ai_socktype;
-  int ai_protocol;
-  size_t ai_addrlen;
-  char *ai_cannonname;
+  int              ai_flags;
+  int              ai_family;
+  int              ai_socktype;
+  int              ai_protocol;
+  socklen_t        ai_addrlen;   /* Follow rfc3493 struct addrinfo */
+  char            *ai_canonname;
   struct sockaddr *ai_addr;
   struct addrinfo *ai_next;
 };
index 0b404ae..b12cf8b 100644 (file)
@@ -713,7 +713,7 @@ singleipconnect(struct connectdata *conn,
 
   /* Connect TCP sockets, bind UDP */
   if(conn->socktype == SOCK_STREAM)
-    rc = connect(sockfd, ai->ai_addr, (socklen_t)ai->ai_addrlen);
+    rc = connect(sockfd, ai->ai_addr, ai->ai_addrlen);
   else
     rc = 0;
 
index ade5efa..2205aac 100644 (file)
@@ -94,13 +94,13 @@ typedef struct addrinfo Curl_addrinfo;
 /* OK, so some ipv4-only include tree probably have the addrinfo struct, but
    to work even on those that don't, we provide our own look-alike! */
 struct Curl_addrinfo {
-  int     ai_flags;
-  int     ai_family;
-  int     ai_socktype;
-  int     ai_protocol;
-  size_t  ai_addrlen;
-  struct sockaddr *ai_addr;
-  char   *ai_canonname;
+  int                   ai_flags;
+  int                   ai_family;
+  int                   ai_socktype;
+  int                   ai_protocol;
+  socklen_t             ai_addrlen;   /* Follow rfc3493 struct addrinfo */
+  char                 *ai_canonname;
+  struct sockaddr      *ai_addr;
   struct Curl_addrinfo *ai_next;
 };
 typedef struct Curl_addrinfo Curl_addrinfo;
index 51eca67..bba9fb1 100644 (file)
@@ -370,28 +370,34 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
  * Curl_he2ai() translates from a hostent struct to a Curl_addrinfo struct.
  * The Curl_addrinfo is meant to work like the addrinfo struct does for IPv6
  * stacks, but for all hosts and environments.
-
-struct Curl_addrinfo {
-  int     ai_flags;
-  int     ai_family;
-  int     ai_socktype;
-  int     ai_protocol;
-  size_t  ai_addrlen;
-  struct sockaddr *ai_addr;
-  char   *ai_canonname;
-  struct addrinfo *ai_next;
-};
-
-struct hostent {
-  char    *h_name;        * official name of host *
-  char    **h_aliases;    * alias list *
-  int     h_addrtype;     * host address type *
-  int     h_length;       * length of address *
-  char    **h_addr_list;  * list of addresses *
-}
-#define h_addr  h_addr_list[0]  * for backward compatibility *
-
-*/
+ *      
+ *   Curl_addrinfo defined in "lib/hostip.h"
+ *      
+ *     struct Curl_addrinfo {
+ *       int                   ai_flags;
+ *       int                   ai_family;
+ *       int                   ai_socktype;
+ *       int                   ai_protocol;
+ *       socklen_t             ai_addrlen;   * Follow rfc3493 struct addrinfo *
+ *       char                 *ai_canonname;
+ *       struct sockaddr      *ai_addr;
+ *       struct Curl_addrinfo *ai_next;
+ *     };
+ *      
+ *   hostent defined in <netdb.h>
+ *      
+ *     struct hostent {
+ *       char    *h_name;
+ *       char    **h_aliases;
+ *       int     h_addrtype;
+ *       int     h_length;
+ *       char    **h_addr_list;
+ *     };
+ *      
+ *   for backward compatibility:
+ *      
+ *     #define h_addr  h_addr_list[0]
+ */
 
 Curl_addrinfo *Curl_he2ai(struct hostent *he, int port)
 {