chanuser->changeTime = 0;
chanuser->spamnode = NULL;
+ SYNCHRONIZE(cache_sync);
+
chanuser->next_user = chan->user;
chan->user = chanuser;
chan->usercount++;
chanuser->next_chan = user->channel;
user->channel = chanuser;
+ DESYNCHRONIZE(cache_sync);
+
return chanuser;
}
chanuser->changeTime = 0;
chanuser->spamnode = NULL;
+ SYNCHRONIZE(cache_sync);
chanuser->next_user = chan->user;
chan->user = chanuser;
+ DESYNCHRONIZE(cache_sync);
chan->usercount++;
return chanuser;
}
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)) {
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
if(do_freeChanUser) {
freeChanUser(chanuser);
}
+ DESYNCHRONIZE(cache_sync);
}
void freeChanUser(struct ChanUser *chanuser) {