summaryrefslogtreecommitdiff
path: root/resolv/res_init.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-11-15 08:22:03 +0000
committerJakub Jelinek <jakub@redhat.com>2005-11-15 08:22:03 +0000
commit22d7fbdbae4032639461a7a081762a05deee0529 (patch)
treeff70bd4613f1f05823b2417b2687449d73ac45b0 /resolv/res_init.c
parent1beea155aecf2e7d6bfa1399b7c0f4f53dde408c (diff)
Updated to fedora-glibc-20051115T0809
Diffstat (limited to 'resolv/res_init.c')
-rw-r--r--resolv/res_init.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/resolv/res_init.c b/resolv/res_init.c
index 731c784e17..f881060d58 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -555,7 +555,7 @@ libc_hidden_def (__res_randomid)
* This routine is not expected to be user visible.
*/
void
-res_nclose(res_state statp) {
+__res_iclose(res_state statp, bool free_addr) {
int ns;
if (statp->_vcsock >= 0) {
@@ -568,13 +568,25 @@ res_nclose(res_state statp) {
#else
for (ns = 0; ns < statp->_u._ext.nscount; ns++)
#endif
- if (statp->_u._ext.nsaddrs[ns]
- && statp->_u._ext.nssocks[ns] != -1) {
- close_not_cancel_no_status(statp->_u._ext.nssocks[ns]);
- statp->_u._ext.nssocks[ns] = -1;
+ if (statp->_u._ext.nsaddrs[ns]) {
+ if (statp->_u._ext.nssocks[ns] != -1) {
+ close_not_cancel_no_status(statp->_u._ext.nssocks[ns]);
+ statp->_u._ext.nssocks[ns] = -1;
+ }
+ if (free_addr) {
+ free (statp->_u._ext.nsaddrs[ns]);
+ statp->_u._ext.nsaddrs[ns] = NULL;
+ }
}
statp->_u._ext.nsinit = 0;
}
+libc_hidden_def (__res_iclose)
+
+void
+res_nclose(res_state statp)
+{
+ __res_iclose (statp, true);
+}
#ifdef _LIBC
libc_hidden_def (__res_nclose)
#endif
@@ -589,14 +601,7 @@ res_thread_freeres (void)
/* Never called res_ninit. */
return;
- __res_nclose (&_res); /* Close any VC sockets. */
-
- for (int ns = 0; ns < MAXNS; ns++)
- if (_res._u._ext.nsaddrs[ns] != NULL)
- {
- free (_res._u._ext.nsaddrs[ns]);
- _res._u._ext.nsaddrs[ns] = NULL;
- }
+ __res_iclose (&_res, true); /* Close any VC sockets. */
/* Make sure we do a full re-initialization the next time. */
_res.options = 0;