X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-core.c;h=b7b9b005810043db925054af4d97e055a3801032;hb=fde8aa8c7b1952d14fe9275ae36836fe995ea943;hp=aec63667c6766ae70332e0fb9133638054f22d01;hpb=4c0b87583da634b12c5745baa19c7ec42e30376c;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-core.c b/apps/irssi/src/silc/core/silc-core.c index aec63667..b7b9b005 100644 --- a/apps/irssi/src/silc/core/silc-core.c +++ b/apps/irssi/src/silc/core/silc-core.c @@ -310,11 +310,32 @@ void silc_opt_callback(poptContext con, silc_hash_register_default(); silc_hmac_register_default(); silc_create_key_pair(opt_pkcs, opt_bits, NULL, NULL, NULL, - NULL, NULL, NULL, TRUE); + NULL, NULL, NULL, NULL, TRUE); exit(0); } } +static void sig_init_finished(void) +{ + /* Check ~/.silc directory and public and private keys */ + if (!silc_client_check_silc_dir()) { + idletag = -1; + exit(1); + } + + /* Load public and private key */ + if (!silc_client_load_keys(silc_client)) { + idletag = -1; + exit(1); + } + + /* Initialize the SILC client */ + if (!silc_client_init(silc_client)) { + idletag = -1; + exit(1); + } +} + /* Init SILC. Called from src/fe-text/silc.c */ void silc_core_init(void) @@ -383,6 +404,7 @@ void silc_core_init(void) #endif signal_add("setup changed", (SIGNAL_FUNC) sig_setup_changed); + signal_add("irssi init finished", (SIGNAL_FUNC) sig_init_finished); silc_init_userinfo(); @@ -411,24 +433,6 @@ void silc_core_init(void) silc_client->hostname = silc_net_localhost(); silc_client->realname = g_strdup(settings_get_str("real_name")); - /* Check ~/.silc directory and public and private keys */ - if (silc_client_check_silc_dir() == FALSE) { - idletag = -1; - return; - } - - /* Load public and private key */ - if (silc_client_load_keys(silc_client) == FALSE) { - idletag = -1; - return; - } - - /* Initialize the SILC client */ - if (!silc_client_init(silc_client)) { - idletag = -1; - return; - } - silc_log_set_callback(SILC_LOG_INFO, silc_log_misc, NULL); silc_log_set_callback(SILC_LOG_WARNING, silc_log_misc, NULL); silc_log_set_callback(SILC_LOG_ERROR, silc_log_misc, NULL); @@ -473,6 +477,7 @@ void silc_core_deinit(void) signal_emit("chat protocol deinit", 1, chat_protocol_find("SILC")); signal_remove("setup changed", (SIGNAL_FUNC) sig_setup_changed); + signal_remove("irssi init finished", (SIGNAL_FUNC) sig_init_finished); silc_server_deinit(); silc_channels_deinit();