X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-channels.c;h=a44f88cd6bdf6da1aad165e059a71b36133b6cb1;hb=dec23b2f25ece17efc64295a144cde7b72b7014d;hp=81696eeecbd0b160cd02b0358c29d669c0208e89;hpb=0f093b08e579e8c8e04800ed74210bbd521a1475;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-channels.c b/apps/irssi/src/silc/core/silc-channels.c index 81696eee..a44f88cd 100644 --- a/apps/irssi/src/silc/core/silc-channels.c +++ b/apps/irssi/src/silc/core/silc-channels.c @@ -829,7 +829,7 @@ SILC_CLIENT_CMD_FUNC(key_get_clients) static void command_key(const char *data, SILC_SERVER_REC *server, WI_ITEM_REC *item) { - SilcClientConnection conn = server->conn; + SilcClientConnection conn; SilcClientEntry client_entry = NULL; SilcChannelEntry channel_entry = NULL; char *nickname = NULL, *tmp; @@ -840,9 +840,11 @@ static void command_key(const char *data, SILC_SERVER_REC *server, unsigned char **argv; uint32 *argv_lens, *argv_types; - if (!IS_SILC_SERVER(server) || !server->connected) + if (!server || !IS_SILC_SERVER(server) || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED); + conn = server->conn; + /* Now parse all arguments */ tmp = g_strconcat("KEY", " ", data, NULL); silc_parse_command_line(tmp, &argv, &argv_lens, &argv_types, &argc, 7); @@ -870,7 +872,7 @@ static void command_key(const char *data, SILC_SERVER_REC *server, if (type == 1) { if (argv[2][0] == '*') { - nickname = "*"; + nickname = strdup("*"); } else { /* Parse the typed nickname. */ if (!silc_parse_userfqdn(argv[2], &nickname, NULL)) { @@ -1099,6 +1101,7 @@ static void command_key(const char *data, SILC_SERVER_REC *server, } silc_client_free_private_message_keys(keys, keys_count); + } else if (type == 2) { SilcChannelPrivateKey *keys; uint32 keys_count; @@ -1108,12 +1111,14 @@ static void command_key(const char *data, SILC_SERVER_REC *server, keys = silc_client_list_channel_private_keys(silc_client, conn, channel_entry, &keys_count); - if (!keys) - goto out; - + printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_CH_PRIVATE_KEY_LIST, channel_entry->channel_name); + + if (!keys) + goto out; + for (k = 0; k < keys_count; k++) { memset(buf, 0, sizeof(buf)); strncat(buf, " ", 2);