# HG changeset patch # User William Ehlhardt # Date 1184388570 0 # Node ID 264f00bc8f228fa917d95a505e927c0517ac388a # Parent eb86ff3ba21ac44d46cbed0cdd82fefc42b74517 - Change certificate_uninit to unregister all Pools, Schemes, and Verifiers diff -r eb86ff3ba21a -r 264f00bc8f22 libpurple/certificate.c --- a/libpurple/certificate.c Sat Jul 14 02:54:48 2007 +0000 +++ b/libpurple/certificate.c Sat Jul 14 04:49:30 2007 +0000 @@ -712,12 +712,31 @@ void purple_certificate_uninit(void) { - /* Unregister the builtins */ - purple_certificate_unregister_verifier(&x509_singleuse); - purple_certificate_unregister_pool(&x509_tls_peers); - purple_certificate_unregister_verifier(&x509_tls_cached); - - /* TODO: Unregistering everything would be good... */ + GList *full_list, *l; + + /* Unregister all Schemes */ + full_list = g_list_copy(cert_schemes); /* Make a working copy */ + for (l = full_list; l; l = l->next) { + purple_certificate_unregister_scheme( + (PurpleCertificateScheme *) l->data ); + } + g_list_free(full_list); + + /* Unregister all Verifiers */ + full_list = g_list_copy(cert_verifiers); /* Make a working copy */ + for (l = full_list; l; l = l->next) { + purple_certificate_unregister_verifier( + (PurpleCertificateVerifier *) l->data ); + } + g_list_free(full_list); + + /* Unregister all Pools */ + full_list = g_list_copy(cert_pools); /* Make a working copy */ + for (l = full_list; l; l = l->next) { + purple_certificate_unregister_pool( + (PurpleCertificatePool *) l->data ); + } + g_list_free(full_list); } gpointer