ChanServ, OpServ and main.c bug fixes
[srvx.git] / src / chanserv.c
index 1a4c6d6f011082f70a1adbc939a153fcb047ec1e..19ece49ba99b118370cfbbf89aa23fc84721ef7d 100644 (file)
@@ -6466,7 +6466,7 @@ chanserv_channel_read(const char *key, struct record_data *hir)
                 continue;
             cData->chOpts[chOpt] = str[0];
         }
-        if((str = database_get_data(channel, KEY_FLAGS, RECDB_QSTRING)))
+        if((str = database_get_data(obj, KEY_FLAGS, RECDB_QSTRING)))
             cData->flags = atoi(str);
     }
     else if((str = database_get_data(channel, KEY_FLAGS, RECDB_QSTRING)))
@@ -6528,11 +6528,7 @@ chanserv_channel_read(const char *key, struct record_data *hir)
         cData->flags &= ~CHANNEL_SUSPENDED;
     }
 
-    if((cData->flags & CHANNEL_SUSPENDED) && (suspended->expires > now))
-    {
-        timeq_add(suspended->expires, chanserv_expire_suspension, suspended);
-    }
-    else
+    if(!(cData->flags & CHANNEL_SUSPENDED))
     {
         struct mod_chanmode change;
         change.modes_set = change.modes_clear = 0;
@@ -6541,6 +6537,10 @@ chanserv_channel_read(const char *key, struct record_data *hir)
         change.args[0].member = AddChannelUser(chanserv, cNode);
         mod_chanmode_announce(chanserv, cNode, &change);
     }
+    else if(suspended->expires > now)
+    {
+        timeq_add(suspended->expires, chanserv_expire_suspension, suspended);
+    }
 
     str = database_get_data(channel, KEY_REGISTERED, RECDB_QSTRING);
     cData->registered = str ? (time_t)strtoul(str, NULL, 0) : now;