Support gethostbyname_r_ERANGE.

Bug: 18802601
Change-Id: Iaa64921e96f91e330f1845c5399ee8aba39d9c10
This commit is contained in:
Yabin Cui
2014-12-19 10:10:04 -08:00
parent 65e6985617
commit 7069256495
3 changed files with 18 additions and 3 deletions

View File

@@ -116,7 +116,9 @@ _hf_gethtbyname(void *rv, void *cb_data, va_list ap)
hp = _hf_gethtbyname2(name, af, info);
#endif
if (hp == NULL) {
*info->he = HOST_NOT_FOUND;
if (*info->he == NETDB_INTERNAL && errno == ENOSPC) {
return NS_UNAVAIL;
}
return NS_NOTFOUND;
}
return NS_SUCCESS;
@@ -159,8 +161,12 @@ _hf_gethtbyname2(const char *name, int af, struct getnamaddr *info)
hp = netbsd_gethostent_r(hf, info->hp, info->buf, info->buflen,
info->he);
if (hp == NULL)
if (hp == NULL) {
if (*info->he == NETDB_INTERNAL && errno == ENOSPC) {
goto nospc;
}
break;
}
if (strcasecmp(hp->h_name, name) != 0) {
char **cp;
@@ -259,6 +265,9 @@ _hf_gethtbyaddr(void *rv, void *cb_data, va_list ap)
endhostent_r(&hf);
if (hp == NULL) {
if (errno == ENOSPC) {
return NS_UNAVAIL;
}
*info->he = HOST_NOT_FOUND;
return NS_NOTFOUND;
}