diff options
author | Sven Moritz Hallberg <sm@khjk.org> | 2008-02-10 22:54:28 +0100 |
---|---|---|
committer | Sven Moritz Hallberg <sm@khjk.org> | 2008-02-10 22:54:28 +0100 |
commit | 5bf5edfde81640c1d918a2a1a1bd8bcd450805e1 (patch) | |
tree | 2d23012f3bb568b426375a1120f937c7b45baf44 | |
parent | 5d6204020ac3439388666df54600ad65a384046b (diff) |
log out all accounts when going into keygen
-rw-r--r-- | otr.c | 14 | ||||
-rw-r--r-- | root_commands.c | 4 |
2 files changed, 13 insertions, 5 deletions
@@ -124,6 +124,9 @@ void show_otr_context_info(irc_t *irc, ConnContext *ctx); /* show the list of fingerprints associated with a given context */ void show_fingerprints(irc_t *irc, ConnContext *ctx); +/* to log out accounts during keygen */ +extern void cmd_account(irc_t *irc, char **cmd); + /*** routines declared in otr.h: ***/ @@ -1121,14 +1124,12 @@ void show_otr_context_info(irc_t *irc, ConnContext *ctx) void otr_keygen(irc_t *irc, const char *handle, const char *protocol) { + char *account_off[] = {"account", "off", NULL}; GError *err; GThread *thr; struct kgdata *kg; gint ev; - irc_usermsg(irc, "generating new otr privkey for %s/%s...", - handle, protocol); - kg = g_new0(struct kgdata, 1); if(!kg) { irc_usermsg(irc, "otr keygen failed: out of memory"); @@ -1166,6 +1167,13 @@ void otr_keygen(irc_t *irc, const char *handle, const char *protocol) return; } + /* tell the user what's happening, go comatose, and start the keygen */ + irc_usermsg(irc, "going comatose for otr key generation, this will take a moment"); + irc_usermsg(irc, "all accounts logging out, user commands disabled"); + cmd_account(irc, account_off); + irc_usermsg(irc, "generating new otr privkey for %s/%s...", + handle, protocol); + thr = g_thread_create(&otr_keygen_thread_func, kg, FALSE, &err); if(!thr) { irc_usermsg(irc, "otr keygen failed: %s", err->message); diff --git a/root_commands.c b/root_commands.c index 61bb5da9..7352b638 100644 --- a/root_commands.c +++ b/root_commands.c @@ -135,7 +135,7 @@ static void cmd_help( irc_t *irc, char **cmd ) } } -static void cmd_account( irc_t *irc, char **cmd ); +void cmd_account( irc_t *irc, char **cmd ); static void cmd_identify( irc_t *irc, char **cmd ) { @@ -212,7 +212,7 @@ static void cmd_drop( irc_t *irc, char **cmd ) } } -static void cmd_account( irc_t *irc, char **cmd ) +void cmd_account( irc_t *irc, char **cmd ) { account_t *a; |