projects
/
NeonServV5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added experimental multi thread support
[NeonServV5.git]
/
src
/
BanNode.c
diff --git
a/src/BanNode.c
b/src/BanNode.c
index 339298c76ed408295e1fdcf2a9fa3c49578a61d0..7bec1c02c41e2a0df63e4c168f6decc1cf237b25 100644
(file)
--- 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.
3
+ * 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
*
* 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);
struct BanNode *ban = malloc(sizeof(*ban));
ban->chan = chan;
ban->mask = strdup(mask);
+ SYNCHRONIZE(cache_sync);
ban->next = chan->bans;
chan->bans = ban;
ban->next = chan->bans;
chan->bans = ban;
+ DESYNCHRONIZE(cache_sync);
return ban;
}
struct BanNode* getMatchingChannelBan(struct ChanNode *chan, char *mask) {
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)) {
struct BanNode *cban;
for(cban = chan->bans; cban; cban = cban->next) {
if(!match(cban->mask, mask)) {
+ DESYNCHRONIZE(cache_sync);
return cban;
}
}
return cban;
}
}
+ DESYNCHRONIZE(cache_sync);
return NULL;
}
void removeChannelBanMask(struct ChanNode *chan, char *mask) {
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)) {
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;
}
} else
last = cban;
}
+ DESYNCHRONIZE(cache_sync);
}
void removeChannelBan(struct BanNode *ban) {
}
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) {
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;
}
} else
last = cban;
}
+ DESYNCHRONIZE(cache_sync);
}
void removeChannelBans(struct ChanNode *chan) {
}
void removeChannelBans(struct ChanNode *chan) {
+ SYNCHRONIZE(cache_sync);
struct BanNode *ban, *next;
for(ban = chan->bans; ban; ban = next) {
next = ban->next;
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;
free(ban);
}
chan->bans = NULL;
+ DESYNCHRONIZE(cache_sync);
}
}