X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FBanNode.c;h=df3e38e9485049add86c3af208ee244790c7f704;hp=339298c76ed408295e1fdcf2a9fa3c49578a61d0;hb=HEAD;hpb=2d9db1adb1946aba00b203f40eff7d5db8163f01 diff --git a/src/BanNode.c b/src/BanNode.c index 339298c..df3e38e 100644 --- a/src/BanNode.c +++ b/src/BanNode.c @@ -1,5 +1,5 @@ -/* BanNode.c - NeonServ v5.1 - * 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); }