X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver_util.c;h=713b8528bd336120251b811259921e49218ab921;hb=6598e3df6635ec0e44caec364bc4f3bd58d2728f;hp=54ed8e135327edc2d7fe893863e173a5c802101d;hpb=6b6b1b00eeea0a5a9faac129cba3f3a4e46fec16;p=silc.git diff --git a/apps/silcd/server_util.c b/apps/silcd/server_util.c index 54ed8e13..713b8528 100644 --- a/apps/silcd/server_util.c +++ b/apps/silcd/server_util.c @@ -1068,8 +1068,10 @@ bool silc_server_check_cmode_rights(SilcServer server, } if (mode & SILC_CHANNEL_MODE_PASSPHRASE) { - if (is_op && !is_fo) - return FALSE; + if (!(channel->mode & SILC_CHANNEL_MODE_PASSPHRASE)) { + if (is_op && !is_fo) + return FALSE; + } } else { if (channel->mode & SILC_CHANNEL_MODE_PASSPHRASE) { if (is_op && !is_fo) @@ -1078,8 +1080,10 @@ bool silc_server_check_cmode_rights(SilcServer server, } if (mode & SILC_CHANNEL_MODE_CIPHER) { - if (is_op && !is_fo) - return FALSE; + if (!(channel->mode & SILC_CHANNEL_MODE_CIPHER)) { + if (is_op && !is_fo) + return FALSE; + } } else { if (channel->mode & SILC_CHANNEL_MODE_CIPHER) { if (is_op && !is_fo) @@ -1088,8 +1092,10 @@ bool silc_server_check_cmode_rights(SilcServer server, } if (mode & SILC_CHANNEL_MODE_FOUNDER_AUTH) { - if (is_op && !is_fo) - return FALSE; + if (!(channel->mode & SILC_CHANNEL_MODE_FOUNDER_AUTH)) { + if (is_op && !is_fo) + return FALSE; + } } else { if (channel->mode & SILC_CHANNEL_MODE_FOUNDER_AUTH) { if (is_op && !is_fo) @@ -1098,8 +1104,10 @@ bool silc_server_check_cmode_rights(SilcServer server, } if (mode & SILC_CHANNEL_MODE_SILENCE_USERS) { - if (is_op && !is_fo) - return FALSE; + if (!(channel->mode & SILC_CHANNEL_MODE_SILENCE_USERS)) { + if (is_op && !is_fo) + return FALSE; + } } else { if (channel->mode & SILC_CHANNEL_MODE_SILENCE_USERS) { if (is_op && !is_fo) @@ -1108,8 +1116,10 @@ bool silc_server_check_cmode_rights(SilcServer server, } if (mode & SILC_CHANNEL_MODE_SILENCE_OPERS) { - if (is_op && !is_fo) - return FALSE; + if (!(channel->mode & SILC_CHANNEL_MODE_SILENCE_OPERS)) { + if (is_op && !is_fo) + return FALSE; + } } else { if (channel->mode & SILC_CHANNEL_MODE_SILENCE_OPERS) { if (is_op && !is_fo)