From: Pekka Riikonen Date: Sun, 16 Sep 2001 17:03:27 +0000 (+0000) Subject: updates. X-Git-Tag: silcertest~104 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=0e48c82aed7bdbfaf811c1109eac4c980c2d3475;p=silc.git updates. --- diff --git a/CHANGES b/CHANGES index 3cae5b3b..bcd3fb84 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,11 @@ Sun Sep 16 12:32:58 EEST 2001 Pekka Riikonen nickname formatter doesn't set the new nick anymore to Nick@host. Affected file lib/silcclient/idlist.[ch]. + * Now actually fixed the nickname changing on disconnection. + Added new function silc_change_nick to the Irssi SILC Client. + Affected file irssi/src/silc/core/client_ops.c, + irssi/src/silc/core/silc-nicklist.[ch]. + Sat Sep 15 13:29:17 EEST 2001 Pekka Riikonen * Check that the public key exists in the GETKEY command before diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index 8bb18afd..f3507b7e 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -214,6 +214,14 @@ void silc_disconnect(SilcClient client, SilcClientConnection conn) { SILC_SERVER_REC *server = conn->context; + if (server->conn) { + nicklist_rename_unique(SERVER(server), + server->conn->local_entry, server->nick, + server->conn->local_entry, + silc_client->username); + silc_change_nick(server, silc_client->username); + } + server->conn->context = NULL; server->conn = NULL; server->connection_lost = TRUE; diff --git a/apps/irssi/src/silc/core/silc-nicklist.c b/apps/irssi/src/silc/core/silc-nicklist.c index 9ffa1138..892cf457 100644 --- a/apps/irssi/src/silc/core/silc-nicklist.c +++ b/apps/irssi/src/silc/core/silc-nicklist.c @@ -121,6 +121,11 @@ static void sig_connected(SILC_SERVER_REC *server) server->get_nick_flags = (void *) get_nick_flags; } +void silc_change_nick(SILC_SERVER_REC *server, const char *newnick) +{ + server_change_nick((SERVER_REC *)server, newnick); +} + void silc_nicklist_init(void) { signal_add("server connected", (SIGNAL_FUNC) sig_connected); diff --git a/apps/irssi/src/silc/core/silc-nicklist.h b/apps/irssi/src/silc/core/silc-nicklist.h index adc82e21..b1139478 100644 --- a/apps/irssi/src/silc/core/silc-nicklist.h +++ b/apps/irssi/src/silc/core/silc-nicklist.h @@ -17,7 +17,7 @@ SILC_NICK_REC *silc_nicklist_find(SILC_CHANNEL_REC *channel, /* Check if `msg' is meant for `nick'. */ int silc_nick_match(const char *nick, const char *msg); - +void silc_change_nick(SILC_SERVER_REC *server, const char *newnick); void silc_nicklist_init(void); void silc_nicklist_deinit(void); diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index 9bc50bd4..35243090 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -205,16 +205,10 @@ static void sig_connected(SILC_SERVER_REC *server) static void sig_disconnected(SILC_SERVER_REC *server) { - if (!IS_SILC_SERVER(server) || server->conn == NULL) + if (!IS_SILC_SERVER(server)) return; - if (server->conn->sock != NULL) { - nicklist_rename_unique(SERVER(server), - server->conn->local_entry, server->nick, - server->conn->local_entry, - silc_client->username); - signal_emit("message own_nick", 4, server, server->nick, server->nick, ""); - + if (server->conn && server->conn->sock != NULL) { silc_client_close_connection(silc_client, NULL, server->conn); /* SILC closes the handle */ diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 567a0f92..923270a1 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -122,6 +122,10 @@ static int silc_server_is_registered(SilcServer server, SilcCommand command) { SilcIDListData idata = (SilcIDListData)sock->user_data; + + if (!idata) + return FALSE; + if (idata->status & SILC_IDLIST_STATUS_REGISTERED) return TRUE; @@ -5109,10 +5113,8 @@ SILC_SERVER_CMD_FUNC(getkey) client_id, TRUE, NULL); if ((!client && !cmd->pending && !server->standalone) || - (client && !client->connection && !cmd->pending && - !server->standalone) || - (client && !client->data.public_key && !cmd->pending && - !server->standalone)) { + (client && !client->connection && !cmd->pending) || + (client && !client->data.public_key && !cmd->pending)) { SilcBuffer tmpbuf; uint16 old_ident; SilcSocketConnection dest_sock;