summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorHajimu UMEMOTO <ume@FreeBSD.org>2006-03-01 15:53:49 +0000
committerHajimu UMEMOTO <ume@FreeBSD.org>2006-03-01 15:53:49 +0000
commit3a0b3b673936ba102a3d18433a5a7a61f6164b35 (patch)
tree030d7f9293e0bf8741ca3f529fdeda73b64d2c70 /lib/libc
parent925374d4538beff4ffddc35f8f28ec92949edaff (diff)
Notes
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/net/getaddrinfo.c20
-rw-r--r--lib/libc/net/res_query.c20
2 files changed, 40 insertions, 0 deletions
diff --git a/lib/libc/net/getaddrinfo.c b/lib/libc/net/getaddrinfo.c
index f38a2a7f8789..6e98fcbb049b 100644
--- a/lib/libc/net/getaddrinfo.c
+++ b/lib/libc/net/getaddrinfo.c
@@ -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)
diff --git a/lib/libc/net/res_query.c b/lib/libc/net/res_query.c
index 483ff8d2acb5..0cfed0338c49 100644
--- a/lib/libc/net/res_query.c
+++ b/lib/libc/net/res_query.c
@@ -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)