static int ssl_module_load(const char **error_r) { #ifdef HAVE_SSL const char *plugin_name = "ssl_iostream_openssl"; struct module_dir_load_settings mod_set; memset(&mod_set, 0, sizeof(mod_set)); mod_set.abi_version = DOVECOT_ABI_VERSION; mod_set.setting_name = "<built-in lib-ssl-iostream lookup>"; ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set); ssl_vfuncs = module_get_symbol(ssl_module, "ssl_vfuncs"); if (ssl_vfuncs == NULL) { *error_r = t_strdup_printf("%s: Broken plugin: " "ssl_vfuncs symbol not found", plugin_name); module_dir_unload(&ssl_module); return -1; } /* Destroy SSL module after (most of) the others. Especially lib-fs backends may still want to access SSL module in their own atexit-callbacks. */ lib_atexit_priority(ssl_module_unload, LIB_ATEXIT_PRIORITY_LOW); ssl_module_loaded = TRUE; return 0; #else *error_r = "SSL support not compiled in"; return -1; #endif }
int main(int argc, char *argv[]) { const char *path, *error; master_service = master_service_init("config", 0, &argc, &argv, NULL); if (master_getopt(master_service) > 0) return FATAL_DEFAULT; master_service_init_log(master_service, "config: "); restrict_access_by_env(NULL, FALSE); restrict_access_allow_coredumps(TRUE); master_service_init_finish(master_service); config_parse_load_modules(); path = master_service_get_config_path(master_service); if (config_parse_file(path, TRUE, "", &error) <= 0) i_fatal("%s", error); master_service_run(master_service, client_connected); config_connections_destroy_all(); config_filter_deinit(&config_filter); module_dir_unload(&modules); master_service_deinit(&master_service); return 0; }
void sieve_plugins_unload(struct sieve_instance *svinst) { struct sieve_plugin *plugin; if ( svinst->plugins == NULL ) return; /* Call plugin unload functions for this instance */ plugin = svinst->plugins; while ( plugin != NULL ) { struct module *module = plugin->module; sieve_plugin_unload_func_t unload_func; unload_func = (sieve_plugin_unload_func_t)module_get_symbol (module, t_strdup_printf("%s_unload", module->name)); if ( unload_func != NULL ) { unload_func(svinst, plugin->context); } plugin = plugin->next; } /* Physically unload modules */ i_assert(sieve_modules_refcount > 0); if ( --sieve_modules_refcount != 0 ) return; module_dir_unload(&sieve_modules); }
static int ssl_module_load(const char **error_r) { #ifdef HAVE_SSL const char *plugin_name = "ssl_iostream_openssl"; struct module_dir_load_settings mod_set; memset(&mod_set, 0, sizeof(mod_set)); mod_set.abi_version = DOVECOT_ABI_VERSION; mod_set.setting_name = "<built-in lib-ssl-iostream lookup>"; ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set); ssl_vfuncs = module_get_symbol(ssl_module, "ssl_vfuncs"); if (ssl_vfuncs == NULL) { *error_r = t_strdup_printf("%s: Broken plugin: " "ssl_vfuncs symbol not found", plugin_name); module_dir_unload(&ssl_module); return -1; } atexit(ssl_module_unload); ssl_module_loaded = TRUE; return 0; #else *error_r = "SSL support not compiled in"; return -1; #endif }
int main(int argc, char *argv[]) { const char *path, *error; master_service = master_service_init("config", 0, &argc, &argv, ""); if (master_getopt(master_service) > 0) return FATAL_DEFAULT; master_service_init_log(master_service, "config: "); restrict_access_by_env(NULL, FALSE); restrict_access_allow_coredumps(TRUE); config_parse_load_modules(); path = master_service_get_config_path(master_service); if (config_parse_file(path, TRUE, NULL, &error) <= 0) i_fatal("%s", error); /* notify about our success only after successfully parsing the config file, so if the parsing fails, master won't immediately just recreate this process (and fail again and so on). */ master_service_init_finish(master_service); master_service_run(master_service, client_connected); config_connections_destroy_all(); config_filter_deinit(&config_filter); module_dir_unload(&modules); master_service_deinit(&master_service); return 0; }
static void main_deinit(void) { dict_connections_destroy_all(); dict_drivers_unregister_all(); module_dir_unload(&modules); sql_drivers_deinit(); random_deinit(); }
int main(int argc, char *argv[]) { const struct setting_parser_info *set_roots[] = { &stats_setting_parser_info, NULL }; const enum master_service_flags service_flags = MASTER_SERVICE_FLAG_NO_IDLE_DIE | MASTER_SERVICE_FLAG_UPDATE_PROCTITLE; const char *error; void **sets; master_service = master_service_init("stats", service_flags, &argc, &argv, ""); if (master_getopt(master_service) > 0) return FATAL_DEFAULT; if (master_service_settings_read_simple(master_service, set_roots, &error) < 0) i_fatal("Error reading configuration: %s", error); master_service_init_log(master_service, "stats: "); main_preinit(); sets = master_service_settings_get_others(master_service); stats_settings = sets[0]; mail_commands_init(); mail_sessions_init(); mail_users_init(); mail_domains_init(); mail_ips_init(); mail_global_init(); master_service_init_finish(master_service); master_service_run(master_service, client_connected); clients_destroy_all(); mail_commands_deinit(); mail_sessions_deinit(); mail_users_deinit(); mail_domains_deinit(); mail_ips_deinit(); mail_global_deinit(); if (mail_server_conn != NULL) mail_server_connection_destroy(&mail_server_conn); module_dir_unload(&modules); i_assert(global_used_memory == 0); master_service_deinit(&master_service); return 0; }
void mail_storage_service_deinit(struct mail_storage_service_ctx **_ctx) { struct mail_storage_service_ctx *ctx = *_ctx; *_ctx = NULL; (void)mail_storage_service_all_iter_deinit(ctx); if (ctx->conn != NULL) { if (mail_user_auth_master_conn == ctx->conn) mail_user_auth_master_conn = NULL; auth_master_deinit(&ctx->conn); } if (ctx->set_cache != NULL) master_service_settings_cache_deinit(&ctx->set_cache); pool_unref(&ctx->pool); module_dir_unload(&mail_storage_service_modules); mail_storage_deinit(); dict_drivers_unregister_builtin(); }
static void ssl_module_unload(void) { module_dir_deinit(ssl_module); ssl_vfuncs->global_deinit(); module_dir_unload(&ssl_module); }
void dcrypt_deinitialize(void) { module_dir_unload(&dcrypt_module); dcrypt_vfs = NULL; }
void doveadm_unload_modules(void) { module_dir_unload(&modules); }
static void ssl_module_unload(void) { module_dir_unload(&ssl_module); }