updates.
[silc.git] / apps / silcd / server_util.c
index d9d2319cf4b8451d23388d07b92ae41bc0420f59..b00fbb0d707a2d778ad65a7e22e0a8d4e0abc260 100644 (file)
@@ -624,7 +624,7 @@ void silc_server_remove_channels_by_server(SilcServer server,
   SilcIDCacheEntry id_cache = NULL;
   SilcChannelEntry channel = NULL;
 
-  SILC_LOG_DEBUG(("Start"));
+  SILC_LOG_DEBUG(("Removing channels by server"));
 
   if (silc_idcache_get_all(server->global_list->channels, &list)) {
     if (silc_idcache_list_first(list, &id_cache)) {
@@ -650,7 +650,7 @@ void silc_server_update_channels_by_server(SilcServer server,
   SilcIDCacheEntry id_cache = NULL;
   SilcChannelEntry channel = NULL;
 
-  SILC_LOG_DEBUG(("Start"));
+  SILC_LOG_DEBUG(("Updating channels by server"));
 
   if (silc_idcache_get_all(server->global_list->channels, &list)) {
     if (silc_idcache_list_first(list, &id_cache)) {
@@ -1018,14 +1018,17 @@ bool silc_server_check_cmode_rights(SilcServer server,
   if (is_op && is_fo)
     return TRUE;
 
+  /* Founder implies operator */
+  if (is_fo)
+    is_op = TRUE;
+
   /* We know that client is channel operator, check that they are not
      changing anything that requires channel founder rights. Rest of the
      modes are available automatically for channel operator. */
 
   if (mode & SILC_CHANNEL_MODE_PRIVKEY) {
-    if (!(channel->mode & SILC_CHANNEL_MODE_PRIVKEY))
-      if (is_op && !is_fo)
-       return FALSE;
+    if (is_op && !is_fo)
+      return FALSE;
   } else {
     if (channel->mode & SILC_CHANNEL_MODE_PRIVKEY) {
       if (is_op && !is_fo)
@@ -1034,9 +1037,8 @@ bool silc_server_check_cmode_rights(SilcServer server,
   }
   
   if (mode & SILC_CHANNEL_MODE_PASSPHRASE) {
-    if (!(channel->mode & SILC_CHANNEL_MODE_PASSPHRASE))
-      if (is_op && !is_fo)
-       return FALSE;
+    if (is_op && !is_fo)
+      return FALSE;
   } else {
     if (channel->mode & SILC_CHANNEL_MODE_PASSPHRASE) {
       if (is_op && !is_fo)
@@ -1045,9 +1047,8 @@ bool silc_server_check_cmode_rights(SilcServer server,
   }
 
   if (mode & SILC_CHANNEL_MODE_CIPHER) {
-    if (!(channel->mode & SILC_CHANNEL_MODE_CIPHER))
-      if (is_op && !is_fo)
-       return FALSE;
+    if (is_op && !is_fo)
+      return FALSE;
   } else {
     if (channel->mode & SILC_CHANNEL_MODE_CIPHER) {
       if (is_op && !is_fo)
@@ -1056,9 +1057,8 @@ bool silc_server_check_cmode_rights(SilcServer server,
   }
   
   if (mode & SILC_CHANNEL_MODE_FOUNDER_AUTH) {
-    if (!(channel->mode & SILC_CHANNEL_MODE_FOUNDER_AUTH))
-      if (is_op && !is_fo)
-       return FALSE;
+    if (is_op && !is_fo)
+      return FALSE;
   } else {
     if (channel->mode & SILC_CHANNEL_MODE_FOUNDER_AUTH) {
       if (is_op && !is_fo)
@@ -1067,9 +1067,8 @@ bool silc_server_check_cmode_rights(SilcServer server,
   }
   
   if (mode & SILC_CHANNEL_MODE_SILENCE_USERS) {
-    if (!(channel->mode & SILC_CHANNEL_MODE_SILENCE_USERS))
-      if (is_op && !is_fo)
-       return FALSE;
+    if (is_op && !is_fo)
+      return FALSE;
   } else {
     if (channel->mode & SILC_CHANNEL_MODE_SILENCE_USERS) {
       if (is_op && !is_fo)
@@ -1078,9 +1077,8 @@ bool silc_server_check_cmode_rights(SilcServer server,
   }
   
   if (mode & SILC_CHANNEL_MODE_SILENCE_OPERS) {
-    if (!(channel->mode & SILC_CHANNEL_MODE_SILENCE_OPERS))
-      if (is_op && !is_fo)
-       return FALSE;
+    if (is_op && !is_fo)
+      return FALSE;
   } else {
     if (channel->mode & SILC_CHANNEL_MODE_SILENCE_OPERS) {
       if (is_op && !is_fo)