X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FChanUser.c;h=9ac06912ef0683039cd2bb1accc4cf529e09365f;hb=55831bf424312a6908ca07a904f288fba0919a9a;hp=7638d6fe8c782e4fc141aea995e018af74dfa131;hpb=7d31bc7adfcfc4a16e5ace2f383a18cae5cd5618;p=NeonServV5.git diff --git a/src/ChanUser.c b/src/ChanUser.c index 7638d6f..9ac0691 100644 --- a/src/ChanUser.c +++ b/src/ChanUser.c @@ -1,5 +1,5 @@ -/* ChanUser.c - NeonServ v5.1 - * Copyright (C) 2011 Philipp Kreil (pk910) +/* ChanUser.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 @@ -33,6 +33,8 @@ struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) { chanuser->changeTime = 0; chanuser->spamnode = NULL; + SYNCHRONIZE(cache_sync); + chanuser->next_user = chan->user; chan->user = chanuser; chan->usercount++; @@ -40,6 +42,8 @@ struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) { chanuser->next_chan = user->channel; user->channel = chanuser; + DESYNCHRONIZE(cache_sync); + return chanuser; } @@ -57,8 +61,10 @@ struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *us chanuser->changeTime = 0; chanuser->spamnode = NULL; + SYNCHRONIZE(cache_sync); chanuser->next_user = chan->user; chan->user = chanuser; + DESYNCHRONIZE(cache_sync); chan->usercount++; return chanuser; @@ -97,6 +103,7 @@ struct ChanUser* getUserChannels(struct UserNode *user, struct ChanUser *last) { } void delChanUser(struct ChanUser *chanuser, int do_freeChanUser) { + SYNCHRONIZE(cache_sync); struct ChanUser *cchanuser, *last; //remove it from the user's channel-list if(!(chanuser->flags & CHANUSERFLAG_INVISIBLE)) { @@ -133,9 +140,11 @@ void delChanUser(struct ChanUser *chanuser, int do_freeChanUser) { chanuser->next_chan = NULL; chanuser->next_user = NULL; } + DESYNCHRONIZE(cache_sync); } void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int do_freeChanUser) { + SYNCHRONIZE(cache_sync); struct ChanUser *cchanuser, *last; if(remove_from_userlist) { //remove it from the channel's user-list @@ -172,6 +181,7 @@ void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist if(do_freeChanUser) { freeChanUser(chanuser); } + DESYNCHRONIZE(cache_sync); } void freeChanUser(struct ChanUser *chanuser) {