int smfi_main (void) { gboolean success; GError *error = NULL; libmilter_compatible_initialize(); if (client) g_object_unref(client); client = milter_client_new(); setup_milter_client(client); success = milter_client_run(client, &error); if (!success) { milter_error("failed to run main loop: %s", error->message); g_error_free(error); } g_object_unref(client); client = NULL; libmilter_compatible_reset(); milter_quit(); if (success) return MI_SUCCESS; else return MI_FAILURE; }
void milter_manager_quit (void) { if (!initialized) return; if (the_manager) { g_object_unref(the_manager); the_manager = NULL; } _milter_manager_configuration_quit(); g_log_remove_handler("milter-manager", milter_manager_log_handler_id); milter_server_quit(); milter_client_quit(); milter_quit(); }