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
+2005-01-17 Jeffrey Altman <jaltman@mit.edu>
+
+ * gss_libinit.c: implement cleanup of mutexes, static vars, etc for Windows
+
2004-07-29 Sam Hartman <hartmans@mit.edu>
* libgssapi_krb5.exports: Add lucid context routines and gss_krb5_set_allowable_enctypes
remove_error_table(&et_k5g_error_table);
remove_error_table(&et_ggss_error_table);
#endif
+ k5_key_delete(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME);
+ k5_key_delete(K5_KEY_GSS_KRB5_CCACHE_NAME);
k5_mutex_destroy(&kg_vdb.mutex);
+ k5_mutex_destroy(&gssint_krb5_keytab_lock);
}
OM_uint32 gssint_initialize_library (void)
+2005-01-17 Jeffrey Altman <jaltman@mit.edu>
+
+ * krb5_libinit.c: implement library cleanup of mutexes, static vars, etc
+
2005-01-04 Jeffrey Altman <jaltman@mit.edu>
* libkrb5.exports: add krb5_is_thread_safe
if (!INITIALIZER_RAN(krb5int_lib_init) || PROGRAM_EXITING())
return;
- krb5int_rc_terminate();
- krb5int_kt_finalize();
+ k5_mutex_destroy(&krb5int_us_time_mutex);
+
krb5int_cc_finalize();
+ krb5int_kt_finalize();
+ krb5int_rc_terminate();
#if defined(_WIN32) || defined(USE_CCAPI)
krb5_stdcc_shutdown();
+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
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;
+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,
/* 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 */