-/* BanNode.c - NeonServ v5.3
- * Copyright (C) 2011 Philipp Kreil (pk910)
+/* BanNode.c - NeonServ v5.4
+ * 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
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)) {
} 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) {
} 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;
free(ban);
}
chan->bans = NULL;
+ DESYNCHRONIZE(cache_sync);
}