X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FBanNode.c;h=df3e38e9485049add86c3af208ee244790c7f704;hp=7b98d85a030fd0a6e7e78039579d7e2e447f518f;hb=HEAD;hpb=bb5692b9cbff069abbf9573c81e86c3cd2061ceb diff --git a/src/BanNode.c b/src/BanNode.c index 7b98d85..df3e38e 100644 --- a/src/BanNode.c +++ b/src/BanNode.c @@ -1,4 +1,4 @@ -/* BanNode.c - NeonServ v5.3 +/* BanNode.c - NeonServ v5.6 * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -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); }