From: Pekka Riikonen Date: Thu, 16 May 2002 11:05:51 +0000 (+0000) Subject: updates X-Git-Tag: silc.client.0.9.1~13 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=d4270c916472e10ffe59f7fe5e7f1948585a5054 updates --- diff --git a/CHANGES b/CHANGES index edd66f13..e57f70b0 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,10 @@ Thu May 16 13:05:13 CEST 2002 Pekka Riikonen * The nickname argument to watch notify can be optional. Fixes a crash in server. Affected file silcd/packet_send.c. + * Remove the client entry from cache if the WATCH notify type + is KILLED, SERVER_SIGNOFF or SIGNOFF. Affected file is + lib/silcclient/client_notify.c. + Wed May 15 19:01:42 EEST 2002 Pekka Riikonen * Merged with Irssi CVS for Irssi SILC client. diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index cd5979dd..6fca4be7 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -1807,6 +1807,8 @@ typedef struct { void ask_passphrase_completion(const char *passphrase, void *context) { AskPassphrase p = (AskPassphrase)context; + if (passphrase && passphrase[0] == '\0') + passphrase = NULL; p->completion((unsigned char *)passphrase, passphrase ? strlen(passphrase) : 0, p->context); silc_free(p); diff --git a/apps/silcd/packet_send.c b/apps/silcd/packet_send.c index 14e46bd5..93bb71fd 100644 --- a/apps/silcd/packet_send.c +++ b/apps/silcd/packet_send.c @@ -1423,7 +1423,7 @@ void silc_server_send_notify_watch(SilcServer server, silc_server_send_notify_dest(server, sock, FALSE, watcher->id, SILC_ID_CLIENT, SILC_NOTIFY_TYPE_WATCH, 4, idp->data, idp->len, - nickname, strlen(nickname), + nickname, nickname ? strlen(nickname) : 0, mode, sizeof(mode), type != SILC_NOTIFY_TYPE_NONE ? n : NULL, sizeof(n)); diff --git a/lib/silcclient/client_notify.c b/lib/silcclient/client_notify.c index dea2e513..6eb1686a 100644 --- a/lib/silcclient/client_notify.c +++ b/lib/silcclient/client_notify.c @@ -1144,6 +1144,10 @@ void silc_client_notify_by_server(SilcClient client, if (tmp && notify == SILC_NOTIFY_TYPE_NICK_CHANGE && !silc_hash_table_count(client_entry->channels)) silc_client_del_client(client, conn, client_entry); + else if (notify == SILC_NOTIFY_TYPE_SIGNOFF || + notify == SILC_NOTIFY_TYPE_SERVER_SIGNOFF || + notify == SILC_NOTIFY_TYPE_KILLED) + silc_client_del_client(client, conn, client_entry); } break; diff --git a/lib/silcclient/command.c b/lib/silcclient/command.c index 88f5ac40..f7df19bf 100644 --- a/lib/silcclient/command.c +++ b/lib/silcclient/command.c @@ -1760,7 +1760,8 @@ static void silc_client_command_oper_send(unsigned char *data, buffer = silc_command_payload_encode_va(SILC_COMMAND_OPER, 0, 2, 1, cmd->argv[1], strlen(cmd->argv[1]), - 2, auth->data, auth->len); + 2, auth ? auth->data : NULL, + auth ? auth->len : 0); silc_client_packet_send(cmd->client, conn->sock, SILC_PACKET_COMMAND, NULL, 0, NULL, NULL, buffer->data, buffer->len, TRUE); @@ -1829,7 +1830,8 @@ static void silc_client_command_silcoper_send(unsigned char *data, buffer = silc_command_payload_encode_va(SILC_COMMAND_SILCOPER, 0, 2, 1, cmd->argv[1], strlen(cmd->argv[1]), - 2, auth->data, auth->len); + 2, auth ? auth->data : NULL, + auth ? auth->len : 0); silc_client_packet_send(cmd->client, conn->sock, SILC_PACKET_COMMAND, NULL, 0, NULL, NULL, buffer->data, buffer->len, TRUE);