Loading lib/hostares.c +48 −0 Original line number Diff line number Diff line Loading @@ -293,4 +293,52 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, return NULL; /* no struct yet */ } #if !defined(CURLRES_IPV4) /* * The rest of this file is copied from hostip4.c. (needed for the * combination USE_ARES and ENABLE_IPV6). */ struct namebuf { struct hostent hostentry; char *h_addr_list[2]; struct in_addr addrentry; char h_name[16]; /* 123.123.123.123 = 15 letters is maximum */ }; /* * Curl_ip2addr() takes a 32bit ipv4 internet address as input parameter * together with a pointer to the string version of the address, and it * returns a Curl_addrinfo chain filled in correctly with information for this * address/host. * * The input parameters ARE NOT checked for validity but they are expected * to have been checked already when this is called. */ Curl_addrinfo *Curl_ip2addr(in_addr_t num, char *hostname, int port) { Curl_addrinfo *ai; struct hostent *h; struct in_addr *addrentry; struct namebuf buffer; struct namebuf *buf = &buffer; h = &buf->hostentry; h->h_addr_list = &buf->h_addr_list[0]; addrentry = &buf->addrentry; addrentry->s_addr = num; h->h_addr_list[0] = (char*)addrentry; h->h_addr_list[1] = NULL; h->h_addrtype = AF_INET; h->h_length = sizeof(*addrentry); h->h_name = &buf->h_name[0]; h->h_aliases = NULL; /* Now store the dotted version of the address */ snprintf((char *)h->h_name, 16, "%s", hostname); ai = Curl_he2ai(h, port); return ai; } #endif /* !CURLRES_IPV4 */ #endif /* CURLRES_ARES */ lib/hostip4.c +7 −7 Original line number Diff line number Diff line Loading @@ -365,6 +365,7 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, } #endif /* CURLRES_SYNCH */ #endif /* CURLRES_IPV4 */ /* * Curl_he2ai() translates from a hostent struct to a Curl_addrinfo struct. Loading Loading @@ -451,4 +452,3 @@ Curl_addrinfo *Curl_he2ai(struct hostent *he, int port) return firstai; } #endif /* CURLRES_IPV4 */ lib/hostip6.c +4 −3 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ bool Curl_ipvalid(struct SessionHandle *data) return TRUE; } #ifndef USE_THREADING_GETADDRINFO #if !defined(USE_THREADING_GETADDRINFO) && !defined(USE_ARES) #ifdef DEBUG_ADDRINFO static void dump_addrinfo(struct connectdata *conn, const struct addrinfo *ai) Loading @@ -213,7 +213,8 @@ static void dump_addrinfo(struct connectdata *conn, const struct addrinfo *ai) #endif /* * Curl_getaddrinfo() when built ipv6-enabled (non-threading version). * Curl_getaddrinfo() when built ipv6-enabled (non-threading and * non-ares version). * * Returns name information about the given hostname and port number. If * successful, the 'addrinfo' is returned and the forth argument will point to Loading Loading @@ -295,6 +296,6 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, return res; } #endif /* USE_THREADING_GETADDRINFO */ #endif /* !USE_THREADING_GETADDRINFO && !USE_ARES */ #endif /* ipv6 */ lib/setup.h +4 −8 Original line number Diff line number Diff line Loading @@ -358,10 +358,6 @@ typedef int curl_socket_t; #endif /* curl_socket_typedef */ #if defined(ENABLE_IPV6) && defined(USE_ARES) #error "ares does not yet support IPv6. Disable IPv6 or ares and rebuild" #endif #if defined(WIN32) && !defined(__CYGWIN__) && !defined(USE_ARES) && \ !defined(__LCC__) /* lcc-win32 doesn't have _beginthreadex() */ #ifdef ENABLE_IPV6 Loading Loading
lib/hostares.c +48 −0 Original line number Diff line number Diff line Loading @@ -293,4 +293,52 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, return NULL; /* no struct yet */ } #if !defined(CURLRES_IPV4) /* * The rest of this file is copied from hostip4.c. (needed for the * combination USE_ARES and ENABLE_IPV6). */ struct namebuf { struct hostent hostentry; char *h_addr_list[2]; struct in_addr addrentry; char h_name[16]; /* 123.123.123.123 = 15 letters is maximum */ }; /* * Curl_ip2addr() takes a 32bit ipv4 internet address as input parameter * together with a pointer to the string version of the address, and it * returns a Curl_addrinfo chain filled in correctly with information for this * address/host. * * The input parameters ARE NOT checked for validity but they are expected * to have been checked already when this is called. */ Curl_addrinfo *Curl_ip2addr(in_addr_t num, char *hostname, int port) { Curl_addrinfo *ai; struct hostent *h; struct in_addr *addrentry; struct namebuf buffer; struct namebuf *buf = &buffer; h = &buf->hostentry; h->h_addr_list = &buf->h_addr_list[0]; addrentry = &buf->addrentry; addrentry->s_addr = num; h->h_addr_list[0] = (char*)addrentry; h->h_addr_list[1] = NULL; h->h_addrtype = AF_INET; h->h_length = sizeof(*addrentry); h->h_name = &buf->h_name[0]; h->h_aliases = NULL; /* Now store the dotted version of the address */ snprintf((char *)h->h_name, 16, "%s", hostname); ai = Curl_he2ai(h, port); return ai; } #endif /* !CURLRES_IPV4 */ #endif /* CURLRES_ARES */
lib/hostip4.c +7 −7 Original line number Diff line number Diff line Loading @@ -365,6 +365,7 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, } #endif /* CURLRES_SYNCH */ #endif /* CURLRES_IPV4 */ /* * Curl_he2ai() translates from a hostent struct to a Curl_addrinfo struct. Loading Loading @@ -451,4 +452,3 @@ Curl_addrinfo *Curl_he2ai(struct hostent *he, int port) return firstai; } #endif /* CURLRES_IPV4 */
lib/hostip6.c +4 −3 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ bool Curl_ipvalid(struct SessionHandle *data) return TRUE; } #ifndef USE_THREADING_GETADDRINFO #if !defined(USE_THREADING_GETADDRINFO) && !defined(USE_ARES) #ifdef DEBUG_ADDRINFO static void dump_addrinfo(struct connectdata *conn, const struct addrinfo *ai) Loading @@ -213,7 +213,8 @@ static void dump_addrinfo(struct connectdata *conn, const struct addrinfo *ai) #endif /* * Curl_getaddrinfo() when built ipv6-enabled (non-threading version). * Curl_getaddrinfo() when built ipv6-enabled (non-threading and * non-ares version). * * Returns name information about the given hostname and port number. If * successful, the 'addrinfo' is returned and the forth argument will point to Loading Loading @@ -295,6 +296,6 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, return res; } #endif /* USE_THREADING_GETADDRINFO */ #endif /* !USE_THREADING_GETADDRINFO && !USE_ARES */ #endif /* ipv6 */
lib/setup.h +4 −8 Original line number Diff line number Diff line Loading @@ -358,10 +358,6 @@ typedef int curl_socket_t; #endif /* curl_socket_typedef */ #if defined(ENABLE_IPV6) && defined(USE_ARES) #error "ares does not yet support IPv6. Disable IPv6 or ares and rebuild" #endif #if defined(WIN32) && !defined(__CYGWIN__) && !defined(USE_ARES) && \ !defined(__LCC__) /* lcc-win32 doesn't have _beginthreadex() */ #ifdef ENABLE_IPV6 Loading