aboutsummaryrefslogtreecommitdiff
path: root/ares
diff options
context:
space:
mode:
Diffstat (limited to 'ares')
-rw-r--r--ares/Makefile.inc2
-rw-r--r--ares/ares_library_cleanup.375
2 files changed, 76 insertions, 1 deletions
diff --git a/ares/Makefile.inc b/ares/Makefile.inc
index 98c93f303..d5e18ac42 100644
--- a/ares/Makefile.inc
+++ b/ares/Makefile.inc
@@ -20,6 +20,6 @@ MANPAGES= ares_destroy.3 ares_expand_name.3 ares_expand_string.3 ares_fds.3 \
ares_parse_a_reply.3 ares_parse_ptr_reply.3 ares_process.3 \
ares_query.3 ares_search.3 ares_send.3 ares_strerror.3 ares_timeout.3 \
ares_version.3 ares_cancel.3 ares_parse_aaaa_reply.3 ares_getnameinfo.3 \
- ares_getsock.3 ares_parse_ns_reply.3 ares_dup.3 \
+ ares_getsock.3 ares_parse_ns_reply.3 ares_dup.3 ares_library_cleanup.3 \
ares_destroy_options.3 ares_save_options.3 ares_gethostbyname_file.3 \
ares_set_socket_callback.3 ares_library_init.3
diff --git a/ares/ares_library_cleanup.3 b/ares/ares_library_cleanup.3
new file mode 100644
index 000000000..3cd9de90f
--- /dev/null
+++ b/ares/ares_library_cleanup.3
@@ -0,0 +1,75 @@
+.\" $Id$
+.\"
+.\" Copyright 1998 by the Massachusetts Institute of Technology.
+.\" Copyright (C) 2004-2009 by Daniel Stenberg
+.\"
+.\" Permission to use, copy, modify, and distribute this
+.\" software and its documentation for any purpose and without
+.\" fee is hereby granted, provided that the above copyright
+.\" notice appear in all copies and that both that copyright
+.\" notice and this permission notice appear in supporting
+.\" documentation, and that the name of M.I.T. not be used in
+.\" advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission.
+.\" M.I.T. makes no representations about the suitability of
+.\" this software for any purpose. It is provided "as is"
+.\" without express or implied warranty.
+.\"
+.TH ARES_LIBRARY_CLEANUP 3 "19 May 2009"
+.SH NAME
+ares_library_cleanup \- c-ares library deinitialization
+.SH SYNOPSIS
+.nf
+.B #include <ares.h>
+.PP
+.B void ares_library_cleanup(void)
+.PP
+.B cc file.c -lcares
+.fi
+.SH DESCRIPTION
+.PP
+The
+.B ares_library_cleanup
+function uninitializes the c-ares library, freeing all resources
+previously aquired by \fIares_library_init(3)\fP when the library
+was initialized.
+.PP
+This function must be called when the program using c-ares will
+no longer need any c-ares function. Once the program has called
+ares_library_cleanup() it shall not make any further call to any
+c-ares function.
+.PP
+This function does not cancel any pending c-ares lookups or requests
+previously done. Program must use \fIares_cancel(3)\fP for this purpose.
+.PP
+.B This function is not thread safe.
+You have to call it once the program
+is about to terminate, but this call must be done once the program has
+terminated every single thread that it could have initiated. This is
+required to avoid potential race conditions in library deinitialization,
+and also due to the fact that ares_library_cleanup() might call functions
+from other libraries that are thread unsafe, and could conflict with any
+other thread that is already using these other libraries.
+.PP
+Win32/64 application DLLs shall not call ares_library_cleanup() from the
+DllMain function. Doing so will produce deadlocks and other problems.
+.SH NOTES
+This function was first introduced in c-ares version 1.6.1 along with
+the definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP
+as an indication of the availability of this function.
+.PP
+Since the introduction of this function, it is absolutely mandatory to
+call it for any Win32/64 program using c-ares.
+.PP
+Non-Win32/64 systems can still use c-ares version 1.6.1 without calling
+ares_library_cleanup() due to the fact that it is nearly a do-nothing
+function on non-Win32/64 platforms.
+.SH SEE ALSO
+.BR ares_library_init(3),
+.BR ares_cancel(3)
+.SH AUTHOR
+Yang Tse
+.PP
+Copyright 1998 by the Massachusetts Institute of Technology.
+.br
+Copyright (C) 2004-2009 by Daniel Stenberg.