From 175fba2982fdab677e93f1e424fe2405eae9eddb Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Wed, 2 Jan 2002 16:59:09 +0000 Subject: [PATCH] updates. --- CHANGES | 6 ++++++ TODO | 5 +++++ apps/silcd/command.c | 5 ++--- apps/silcd/packet_send.c | 2 +- apps/silcd/packet_send.h | 2 +- apps/silcd/server.c | 16 +++++++++------- apps/silcd/server.h | 5 +++-- lib/silcutil/unix/silcunixutil.c | 2 ++ 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index 41025341..ee6beaa6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +Wed Jan 2 18:56:21 EET 2002 Pekka Riikonen + + * Fixed silc_string_regexify list creation. Fixes bugs with + BAN and INVITE commands in server. The affected file is + lib/silcutil/unix/silcunixutil.c. + Sun Dec 30 13:41:34 EET 2001 Pekka Riikonen * Removed the command destructor entirely from the server's diff --git a/TODO b/TODO index 7184c05e..5e8bfeb4 100644 --- a/TODO +++ b/TODO @@ -51,6 +51,11 @@ TODO/bugs In SILC Client Library not needed and its usage is buggy when the context is registered to multiple pending commands. + o Add perhaps an option of setting the nickname to the client context. + If set (and username != nickname) the client libary would send NICK + command to the server after connecting to automatically set the + nickname. + o Additions to do after protocol version 1.1: o Fix the NICK_CHANGE notify handling not to create new entry diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 14a9b02b..e83ef754 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -3092,8 +3092,7 @@ static void silc_server_command_join_channel(SilcServer server, username and/or hostname is in the ban list the access to the channel is denied. */ if (channel->ban_list) { - if (!channel->ban_list || - silc_string_match(channel->ban_list, check) || + if (silc_string_match(channel->ban_list, check) || silc_string_match(channel->ban_list, check2)) { silc_server_command_send_status_reply( cmd, SILC_COMMAND_JOIN, @@ -4938,7 +4937,7 @@ SILC_SERVER_CMD_FUNC(close) server->router = NULL; server->standalone = TRUE; } - silc_server_free_sock_user_data(server, sock); + silc_server_free_sock_user_data(server, sock, NULL); silc_server_close_connection(server, sock); out: diff --git a/apps/silcd/packet_send.c b/apps/silcd/packet_send.c index b67071a6..f1b0c9d2 100644 --- a/apps/silcd/packet_send.c +++ b/apps/silcd/packet_send.c @@ -1263,7 +1263,7 @@ void silc_server_send_notify_signoff(SilcServer server, SilcSocketConnection sock, bool broadcast, SilcClientID *client_id, - char *message) + const char *message) { SilcBuffer idp; diff --git a/apps/silcd/packet_send.h b/apps/silcd/packet_send.h index 0bf83541..983e8dcb 100644 --- a/apps/silcd/packet_send.h +++ b/apps/silcd/packet_send.h @@ -153,7 +153,7 @@ void silc_server_send_notify_signoff(SilcServer server, SilcSocketConnection sock, bool broadcast, SilcClientID *client_id, - char *message); + const char *message); void silc_server_send_notify_topic_set(SilcServer server, SilcSocketConnection sock, bool broadcast, diff --git a/apps/silcd/server.c b/apps/silcd/server.c index ccb28388..344a89cb 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -1551,7 +1551,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process) close the connection */ if (SILC_IS_DISCONNECTING(sock)) { if (sock->user_data) - silc_server_free_sock_user_data(server, sock); + silc_server_free_sock_user_data(server, sock, NULL); silc_server_close_connection(server, sock); return; } @@ -1560,7 +1560,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process) SILC_SET_DISCONNECTING(sock); if (sock->user_data) - silc_server_free_sock_user_data(server, sock); + silc_server_free_sock_user_data(server, sock, NULL); else if (server->router_conn && server->router_conn->sock == sock && !server->router && server->standalone) silc_schedule_task_add(server->schedule, 0, @@ -1606,7 +1606,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process) SILC_SET_DISCONNECTING(sock); if (sock->user_data) - silc_server_free_sock_user_data(server, sock); + silc_server_free_sock_user_data(server, sock, NULL); silc_server_close_connection(server, sock); } } @@ -2317,7 +2317,7 @@ void silc_server_free_client_data(SilcServer server, SilcSocketConnection sock, SilcClientEntry client, int notify, - char *signoff) + const char *signoff) { FreeClientInternal i = silc_calloc(1, sizeof(*i)); @@ -2366,7 +2366,8 @@ void silc_server_free_client_data(SilcServer server, entities. */ void silc_server_free_sock_user_data(SilcServer server, - SilcSocketConnection sock) + SilcSocketConnection sock, + const char *signoff_message) { SILC_LOG_DEBUG(("Start")); @@ -2374,7 +2375,8 @@ void silc_server_free_sock_user_data(SilcServer server, case SILC_SOCKET_TYPE_CLIENT: { SilcClientEntry user_data = (SilcClientEntry)sock->user_data; - silc_server_free_client_data(server, sock, user_data, TRUE, NULL); + silc_server_free_client_data(server, sock, user_data, TRUE, + signoff_message); break; } case SILC_SOCKET_TYPE_SERVER: @@ -2752,7 +2754,7 @@ SILC_TASK_CALLBACK(silc_server_timeout_remote) } if (sock->user_data) - silc_server_free_sock_user_data(server, sock); + silc_server_free_sock_user_data(server, sock, NULL); silc_server_disconnect_remote(server, sock, "Server closed connection: " "Connection timeout"); diff --git a/apps/silcd/server.h b/apps/silcd/server.h index 6301b58e..58113779 100644 --- a/apps/silcd/server.h +++ b/apps/silcd/server.h @@ -140,9 +140,10 @@ void silc_server_free_client_data(SilcServer server, SilcSocketConnection sock, SilcClientEntry client, int notify, - char *signoff); + const char *signoff); void silc_server_free_sock_user_data(SilcServer server, - SilcSocketConnection sock); + SilcSocketConnection sock, + const char *signoff_message); void silc_server_remove_from_channels(SilcServer server, SilcSocketConnection sock, SilcClientEntry client, diff --git a/lib/silcutil/unix/silcunixutil.c b/lib/silcutil/unix/silcunixutil.c index 79e1185c..3dddce37 100644 --- a/lib/silcutil/unix/silcunixutil.c +++ b/lib/silcutil/unix/silcunixutil.c @@ -53,6 +53,8 @@ char *silc_string_regexify(const char *string) regex[count] = '.'; count++; } else if (string[i] == ',') { + if (i + 1 == len) + continue; regex[count] = '|'; count++; continue; -- 2.24.0