X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fhost.c;h=4497bad2e852193823414f6f56470cf3044bea5b;hp=1226a274397c145908351fc40fc3dcfdf2414204;hb=4a08094db88011153adadbf995103770b20d2a31;hpb=9a2ea3938d09643c6528c3b83b1db4c30f47d981 diff --git a/src/host.c b/src/host.c index 1226a274..4497bad2 100644 --- a/src/host.c +++ b/src/host.c @@ -1,6 +1,6 @@ /* Host name resolution and matching. - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GNU Wget. @@ -36,12 +36,17 @@ as that of the covered work. */ #include #ifndef WINDOWS +# include # include # include # ifndef __BEOS__ # include # endif -# include +# ifdef __VMS +# include "vms_ip.h" +# else /* def __VMS */ +# include +# endif /* def __VMS [else] */ # define SET_H_ERRNO(err) ((void)(h_errno = (err))) #else /* WINDOWS */ # define SET_H_ERRNO(err) WSASetLastError (err) @@ -53,12 +58,16 @@ as that of the covered work. */ #include "host.h" #include "url.h" #include "hash.h" -#include "iri.h" #ifndef NO_ADDRESS # define NO_ADDRESS NO_DATA #endif +#if !HAVE_DECL_H_ERRNO +extern int h_errno; +#endif + + /* Lists of IP addresses that result from running DNS queries. See lookup_host for details. */ @@ -193,7 +202,7 @@ address_list_from_addrinfo (const struct addrinfo *ai) ip = al->addresses; for (ptr = ai; ptr != NULL; ptr = ptr->ai_next) - if (ptr->ai_family == AF_INET6) + if (ptr->ai_family == AF_INET6) { const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)ptr->ai_addr; @@ -203,7 +212,7 @@ address_list_from_addrinfo (const struct addrinfo *ai) ip->ipv6_scope = sin6->sin6_scope_id; #endif ++ip; - } + } else if (ptr->ai_family == AF_INET) { const struct sockaddr_in *sin = @@ -453,7 +462,7 @@ is_valid_ipv4_address (const char *str, const char *end) } if (octets < 4) return false; - + return true; } @@ -478,7 +487,7 @@ is_valid_ipv6_address (const char *str, const char *end) if (str == end) return false; - + /* Leading :: requires some special handling. */ if (*str == ':') { @@ -535,20 +544,20 @@ is_valid_ipv6_address (const char *str, const char *end) saw_xdigit = false; break; } - + return false; } if (saw_xdigit) { - if (tp > ns_in6addrsz - ns_int16sz) + if (tp > ns_in6addrsz - ns_int16sz) return false; tp += ns_int16sz; } if (colonp != NULL) { - if (tp == ns_in6addrsz) + if (tp == ns_in6addrsz) return false; tp = ns_in6addrsz; }