Handle the errors returned by res_querydomain() in same manner.

Reported by:	yar
Tested by:	yar, Rostislav Krasny <rosti.bsd__at__gmail.com>
MFC after:	1 week
This commit is contained in:
Hajimu UMEMOTO 2006-03-01 15:53:49 +00:00
parent 925374d453
commit 3a0b3b6739
2 changed files with 40 additions and 0 deletions

View File

@ -2440,6 +2440,17 @@ res_searchN(name, target)
ret = res_querydomainN(name, NULL, target);
if (ret > 0 || trailing_dot)
return (ret);
if (errno == ECONNREFUSED) {
h_errno = TRY_AGAIN;
return (-1);
}
switch (h_errno) {
case NO_DATA:
case HOST_NOT_FOUND:
break;
default:
return (-1);
}
saved_herrno = h_errno;
tried_as_is++;
}
@ -2515,6 +2526,14 @@ res_searchN(name, target)
}
}
switch (h_errno) {
case NO_DATA:
case HOST_NOT_FOUND:
break;
default:
goto giveup;
}
/*
* If the query has not already been tried as is then try it
* unless RES_NOTLDQUERY is set and there were no dots.
@ -2534,6 +2553,7 @@ res_searchN(name, target)
* else send back meaningless h_errno, that being the one from
* the last DNSRCH we did.
*/
giveup:
if (saved_herrno != -1)
h_errno = saved_herrno;
else if (got_nodata)

View File

@ -229,6 +229,17 @@ res_search(name, class, type, answer, anslen)
ret = res_querydomain(name, NULL, class, type, answer, anslen);
if (ret > 0 || trailing_dot)
return (ret);
if (errno == ECONNREFUSED) {
h_errno = TRY_AGAIN;
return (-1);
}
switch (h_errno) {
case NO_DATA:
case HOST_NOT_FOUND:
break;
default:
return (-1);
}
saved_herrno = h_errno;
tried_as_is++;
}
@ -318,6 +329,14 @@ res_search(name, class, type, answer, anslen)
}
}
switch (h_errno) {
case NO_DATA:
case HOST_NOT_FOUND:
break;
default:
goto giveup;
}
/*
* If the query has not already been tried as is then try it
* unless RES_NOTLDQUERY is set and there were no dots.
@ -336,6 +355,7 @@ res_search(name, class, type, answer, anslen)
* else send back meaningless h_errno, that being the one from
* the last DNSRCH we did.
*/
giveup:
if (saved_herrno != -1)
h_errno = saved_herrno;
else if (got_nodata)