summaryrefslogtreecommitdiff
path: root/libc/inet
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2005-05-10 08:22:56 +0000
committerEric Andersen <andersen@codepoet.org>2005-05-10 08:22:56 +0000
commit60841bc6f445dc3a324315c42afac7a05242bd79 (patch)
tree2d1f166db1a2d6de898538a510bd57d7ad09735f /libc/inet
parent9d4c823b841300f20928582393f78898be86e136 (diff)
The default static buffer sizes are too small to handle the 8 entries returned
by 'nslookup www.yahoo.com' and 'nslookup mail.hotmail.com', and thus we currently return ERANGE when trying to lookup some of the most popular hosts on the planet. Whether these sites deserve to be popular is a question I'll leave for someone else to worry about. This change makes certain we have enough static buffer space to handle about 21 IPv4 IP address replies per DNS query. Far more than enough to handle common cases such as www.yahoo.com and mail.hotmail.com.
Diffstat (limited to 'libc/inet')
-rw-r--r--libc/inet/resolv.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index 368e52893..27b60efea 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -1064,7 +1064,7 @@ struct hostent *gethostbyname(const char *name)
static struct hostent h;
static char buf[sizeof(struct in_addr) +
sizeof(struct in_addr *)*2 +
- sizeof(char *)*(ALIAS_DIM) + 256/*namebuffer*/ + 32/* margin */];
+ sizeof(char *)*(ALIAS_DIM) + 384/*namebuffer*/ + 32/* margin */];
struct hostent *hp;
gethostbyname_r(name, &h, buf, sizeof(buf), &hp, &h_errno);
@@ -1083,7 +1083,7 @@ struct hostent *gethostbyname2(const char *name, int family)
static struct hostent h;
static char buf[sizeof(struct in6_addr) +
sizeof(struct in6_addr *)*2 +
- sizeof(char *)*(ALIAS_DIM) + 256/*namebuffer*/ + 32/* margin */];
+ sizeof(char *)*(ALIAS_DIM) + 384/*namebuffer*/ + 32/* margin */];
struct hostent *hp;
gethostbyname2_r(name, family, &h, buf, sizeof(buf), &hp, &h_errno);
@@ -1404,7 +1404,7 @@ struct hostent *gethostbyaddr (const void *addr, socklen_t len, int type)
#else
sizeof(struct in6_addr) + sizeof(struct in6_addr *)*2 +
#endif /* __UCLIBC_HAS_IPV6__ */
- sizeof(char *)*(ALIAS_DIM) + 256/*namebuffer*/ + 32/* margin */];
+ sizeof(char *)*(ALIAS_DIM) + 384/*namebuffer*/ + 32/* margin */];
struct hostent *hp;
gethostbyaddr_r(addr, len, type, &h, buf, sizeof(buf), &hp, &h_errno);
@@ -1711,7 +1711,7 @@ int getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
int serrno = errno;
int ok = 0;
struct hostent *h = NULL;
- char domain[256];
+ char domain[256];
if (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV|NI_NOFQDN|NI_NAMEREQD|NI_DGRAM))
return EAI_BADFLAGS;
@@ -2003,7 +2003,7 @@ int gethostbyname_r(const char * name,
free(a.dotted);
free(packet);
*h_errnop = NETDB_INTERNAL;
- DPRINTF("buffer to small(multiple addresses)\n");
+ DPRINTF("buffer too small for all addresses\n");
return ERANGE;
}
else if(a.add_count > 0)