Merge branch 'development'
[NeonServV5.git] / src / BanNode.c
index 9d4bd21922f4eca863408815bead65f4fe124671..df3e38e9485049add86c3af208ee244790c7f704 100644 (file)
@@ -1,5 +1,5 @@
-/* BanNode.c - NeonServ v5.3
- * Copyright (C) 2011  Philipp Kreil (pk910)
+/* BanNode.c - NeonServ v5.6
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,22 +23,28 @@ struct BanNode* addChannelBan(struct ChanNode *chan, char *mask) {
     struct BanNode *ban = malloc(sizeof(*ban));
     ban->chan = chan;
     ban->mask = strdup(mask);
+    SYNCHRONIZE(cache_sync);
     ban->next = chan->bans;
     chan->bans = ban;
+    DESYNCHRONIZE(cache_sync);
     return ban;
 }
 
 struct BanNode* getMatchingChannelBan(struct ChanNode *chan, char *mask) {
+    SYNCHRONIZE(cache_sync);
     struct BanNode *cban;
     for(cban = chan->bans; cban; cban = cban->next) {
         if(!match(cban->mask, mask)) {
+            DESYNCHRONIZE(cache_sync);
             return cban;
         }
     }
+    DESYNCHRONIZE(cache_sync);
     return NULL;
 }
 
 void removeChannelBanMask(struct ChanNode *chan, char *mask) {
+    SYNCHRONIZE(cache_sync);
     struct BanNode *cban, *last = NULL;
     for(cban = chan->bans; cban; cban = cban->next) {
         if(!strcmp(cban->mask, mask)) {
@@ -52,9 +58,11 @@ void removeChannelBanMask(struct ChanNode *chan, char *mask) {
         } else 
             last = cban;
     }
+    DESYNCHRONIZE(cache_sync);
 }
 
 void removeChannelBan(struct BanNode *ban) {
+    SYNCHRONIZE(cache_sync);
     struct BanNode *cban, *last = NULL;
     struct ChanNode *chan = ban->chan;
     for(cban = chan->bans; cban; cban = cban->next) {
@@ -69,9 +77,11 @@ void removeChannelBan(struct BanNode *ban) {
         } else 
             last = cban;
     }
+    DESYNCHRONIZE(cache_sync);
 }
 
 void removeChannelBans(struct ChanNode *chan) {
+    SYNCHRONIZE(cache_sync);
     struct BanNode *ban, *next;
     for(ban = chan->bans; ban; ban = next) {
         next = ban->next;
@@ -79,4 +89,5 @@ void removeChannelBans(struct ChanNode *chan) {
         free(ban);
     }
     chan->bans = NULL;
+    DESYNCHRONIZE(cache_sync);
 }