diff options
author | Jeffrey Altman <jaltman@secure-endpoints.com> | 2005-01-17 23:57:51 +0000 |
---|---|---|
committer | Jeffrey Altman <jaltman@secure-endpoints.com> | 2005-01-17 23:57:51 +0000 |
commit | 191783e634d17927051337359f9abbe32c0e5b2e (patch) | |
tree | 23e55cd09bc4ed584e897a03487834bf36172b14 /src/util | |
parent | 962f1e24f1a3838d521db990778e1bd5a0432be2 (diff) | |
download | krb5-191783e634d17927051337359f9abbe32c0e5b2e.tar.gz krb5-191783e634d17927051337359f9abbe32c0e5b2e.tar.xz krb5-191783e634d17927051337359f9abbe32c0e5b2e.zip |
Some applications such as Eudora on Windows load and unload the Kerberos
libraries as part of a plug-in. Plugins are often loaded for a specific
purpose and then unregistered. In order to support this model, the libraries
must restore the library state to the uninitialized state when the library
is unloaded.
ticket: new
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17050 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/et/ChangeLog | 4 | ||||
-rw-r--r-- | src/util/et/error_message.c | 2 | ||||
-rw-r--r-- | src/util/support/ChangeLog | 5 | ||||
-rw-r--r-- | src/util/support/threads.c | 3 |
4 files changed, 14 insertions, 0 deletions
diff --git a/src/util/et/ChangeLog b/src/util/et/ChangeLog index eeec13ebd..bec740722 100644 --- a/src/util/et/ChangeLog +++ b/src/util/et/ChangeLog @@ -1,3 +1,7 @@ +2005-01-17 Jeffrey Altman <jaltman@mit.edu> + + * error_message.c: implement library unload cleanup of mutexes + 2005-01-13 Ken Raeburn <raeburn@mit.edu> * error_message.c (com_err_terminate): Lock the list mutex before diff --git a/src/util/et/error_message.c b/src/util/et/error_message.c index 8bef6804d..e60029b5c 100644 --- a/src/util/et/error_message.c +++ b/src/util/et/error_message.c @@ -62,6 +62,8 @@ void com_err_terminate(void) struct dynamic_et_list *e, *enext; if (! INITIALIZER_RAN(com_err_initialize) || PROGRAM_EXITING()) return; + k5_key_delete(K5_KEY_COM_ERR); + k5_mutex_destroy(&com_err_hook_lock); k5_mutex_lock(&et_list_lock); for (e = et_list_dynamic; e; e = enext) { enext = e->next; diff --git a/src/util/support/ChangeLog b/src/util/support/ChangeLog index 4e0aaa679..010995392 100644 --- a/src/util/support/ChangeLog +++ b/src/util/support/ChangeLog @@ -1,3 +1,8 @@ +2005-01-17 Jeffrey Altman <jaltman@mit.edu> + + * threads.c: implement cleanup of static vars on library + unload (for Windows) + 2005-01-14 Ken Raeburn <raeburn@mit.edu> * threads.c (k5_mutex_lock_update_stats, diff --git a/src/util/support/threads.c b/src/util/support/threads.c index 44b64201f..c8d4199d1 100644 --- a/src/util/support/threads.c +++ b/src/util/support/threads.c @@ -305,6 +305,9 @@ int k5_key_delete (k5_key_t keynum) /* XXX Memory leak here! Need to destroy the associated data for all threads. But watch for race conditions in case threads are going away too. */ + assert(destructors_set[keynum] == 1); + destructors_set[keynum] = 0; + destructors[keynum] = 0; LeaveCriticalSection(&key_lock); #else /* POSIX */ |