From 92d4332d47e60beb1a35f3f55e6461b9a79d0bfb Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Wed, 5 Nov 2003 21:39:02 +0000 Subject: [PATCH] Preserve the anonymous mode if it is set in UMODE, do not send error if user didn't provide it in its mask. --- CHANGES | 6 ++++++ apps/silcd/command.c | 21 +++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/CHANGES b/CHANGES index 76318ba2..ea4b837b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +Wed Nov 5 23:37:36 EET 2003 Pekka Riikonen + + * Fixed UMODE setting in server when the client has anonymous + mode set. The mode setting was not working. Affected file + silcd/command.c. + Mon Nov 2 11:36:08 CET 2003 Jochen Eisinger * Fixed some bugs and typos related to sending split messages. diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 534c1f8a..55f620ac 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -2694,18 +2694,11 @@ SILC_SERVER_CMD_FUNC(umode) } /* Anonymous mode cannot be set by client */ - if (mask & SILC_UMODE_ANONYMOUS) { - if (!(client->mode & SILC_UMODE_ANONYMOUS)) { - silc_server_command_send_status_reply(cmd, SILC_COMMAND_UMODE, - SILC_STATUS_ERR_PERM_DENIED, 0); - goto out; - } - } else { - if (client->mode & SILC_UMODE_ANONYMOUS) { - silc_server_command_send_status_reply(cmd, SILC_COMMAND_UMODE, - SILC_STATUS_ERR_PERM_DENIED, 0); - goto out; - } + if (mask & SILC_UMODE_ANONYMOUS && + !(client->mode & SILC_UMODE_ANONYMOUS)) { + silc_server_command_send_status_reply(cmd, SILC_COMMAND_UMODE, + SILC_STATUS_ERR_PERM_DENIED, 0); + goto out; } /* Update statistics */ @@ -2717,6 +2710,10 @@ SILC_SERVER_CMD_FUNC(umode) server->stat.my_aways--; } + /* If the client has anonymous mode set, preserve it. */ + if (client->mode & SILC_UMODE_ANONYMOUS) + mask |= SILC_UMODE_ANONYMOUS; + /* Change the mode */ client->mode = mask; -- 2.24.0