1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00

* malloc/thread-freeres.c: Conditionalize on _LIBC_REENTRANT.

* sunrpc/rpc_thread.c: Likewise for text_set_element use.
	(__rpc_thread_destroy): Add it to __libc_subfreeres too.

	* include/resolv.h: Add libc_hidden_proto for __res_nclose.
	* resolv/res_init.c (__res_nclose): Add libc_hidden_def.
	(res_thread_freeres): New function, on __libc_thread_subfreeres and
	__libc_subfreeres.

	* malloc/Versions (libc: GLIBC_PRIVATE): Add __libc_thread_freeres.
	* sunrpc/Versions (libc: GLIBC_PRIVATE): Removed.
This commit is contained in:
Roland McGrath
2003-02-22 01:58:06 +00:00
parent e8783fd53d
commit 2a3d906e21
5 changed files with 42 additions and 2 deletions

View File

@ -528,6 +528,7 @@ res_randomid(void) {
libc_hidden_def (__res_randomid)
#endif
/*
* This routine is for closing the socket if a virtual circuit is used and
* the program wants to close it. This provides support for endhostent()
@ -556,3 +557,26 @@ res_nclose(res_state statp) {
}
statp->_u._ext.nsinit = 0;
}
#ifdef _LIBC
libc_hidden_def (__res_nclose)
#endif
#ifdef _LIBC
# ifdef _LIBC_REENTRANT
/* This is called when a thread is exiting to free resources held in _res. */
static void __attribute__ ((section ("__libc_thread_freeres_fn")))
res_thread_freeres (void)
{
__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;
}
}
text_set_element (__libc_thread_subfreeres, res_thread_freeres);
text_set_element (__libc_subfreeres, res_thread_freeres);
# endif
#endif