activated new fakehost protocol
[srvx.git] / src / mod-watchdog.c
index e62bcd003156df78c685472dabfcb3eadaeb59c8..690ed0d2069d11cdb9531b44f141d7a6caf57ffb 100644 (file)
@@ -360,7 +360,8 @@ watchdog_detected_badword(struct userNode *user, struct chanNode *chan, struct b
             free(hostmask);
             
         case BADACTION_KICK:
-            KickChannelUser(user, chan, watchdog, reason);     
+            if(GetUserMode(chan, user))
+                KickChannelUser(user, chan, watchdog, reason); 
             break;
         case BADACTION_KILL:
             DelUser(user, watchdog, 1, reason);
@@ -380,7 +381,7 @@ watchdog_channel_message(struct userNode *user, struct chanNode *chan, const cha
 {
     dict_iterator_t it;
 
-    if(!watchdog)
+    if(!watchdog || !dict_find(chanlist, chan->name, NULL))
         return;
 
     for (it = dict_first(shitlist); it; it = iter_next(it)) {
@@ -546,13 +547,15 @@ watchdog_saxdb_write(struct saxdb_context *ctx)
         saxdb_start_record(ctx, KEY_BADWORDS, 1);
         for (it = dict_first(shitlist); it; it = iter_next(it)) {
             struct badword *badword = iter_data(it);
-            saxdb_start_record(ctx, iter_key(it), 0);
-            
-            saxdb_write_string(ctx, KEY_BADWORD_MASK, badword->badword_mask);
-            saxdb_write_int(ctx, KEY_BADWORD_TRIGGERED, badword->triggered);
-            saxdb_write_int(ctx, KEY_BADWORD_ACTION, badword->action);
-            
-            saxdb_end_record(ctx);
+            if(badword && badword->badword_mask) {
+                saxdb_start_record(ctx, iter_key(it), 0);
+                
+                saxdb_write_string(ctx, KEY_BADWORD_MASK, badword->badword_mask);
+                saxdb_write_int(ctx, KEY_BADWORD_TRIGGERED, badword->triggered);
+                saxdb_write_int(ctx, KEY_BADWORD_ACTION, badword->action);
+                
+                saxdb_end_record(ctx);
+            }
         }
         saxdb_end_record(ctx);
     }
@@ -561,9 +564,11 @@ watchdog_saxdb_write(struct saxdb_context *ctx)
         saxdb_start_record(ctx, KEY_CHANNELS, 1);
         for (it = dict_first(chanlist); it; it = iter_next(it)) {
             struct watchdog_channel *wc = iter_data(it);
-            saxdb_start_record(ctx, wc->channel->name, 0);
-            //anything else?
-            saxdb_end_record(ctx);
+            if(wc && wc->channel && wc->channel->name) {
+                saxdb_start_record(ctx, wc->channel->name, 0);
+                //anything else?
+                saxdb_end_record(ctx);
+            }
         }
         saxdb_end_record(ctx);
     }