added some debug code & fixed compiler warning
[NeonServV5.git] / src / ChanUser.c
index 795d237a2da298075a093404c4ea29d386da9803..63777258e1b5e133582f8223d08e4ed7145b0f3e 100644 (file)
@@ -1,4 +1,4 @@
-/* ChanUser.c - NeonServ v5.3
+/* ChanUser.c - NeonServ v5.6
  * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -21,6 +21,9 @@
 #include "UserNode.h"
 
 struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) {
+    if(isUserOnChan(user, chan)) {
+        putlog(LOGLEVEL_ERROR, "CACHE FAIL");
+    }
     struct ChanUser *chanuser = malloc(sizeof(*chanuser));
     if (!chanuser)
     {
@@ -30,6 +33,7 @@ struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) {
     chanuser->flags = 0;
     chanuser->user = user;
     chanuser->chan = chan;
+    chanuser->visCount = 0;
     
     chanuser->changeTime = 0;
     chanuser->spamnode = NULL;
@@ -58,6 +62,7 @@ struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *us
     chanuser->flags = CHANUSERFLAG_INVISIBLE;
     chanuser->user = user;
     chanuser->chan = chan;
+    chanuser->visCount = 0;
     
     chanuser->changeTime = 0;
     chanuser->spamnode = NULL;
@@ -121,18 +126,16 @@ 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)) {
-        last = NULL;
-        for(cchanuser = chanuser->user->channel; cchanuser; cchanuser = cchanuser->next_chan) {
-            if(cchanuser == chanuser) {
-                if(last) 
-                    last->next_chan = chanuser->next_chan;
-                else
-                    chanuser->user->channel = chanuser->next_chan;
-                break;
-            } else
-                last = cchanuser;
-        }
+    last = NULL;
+    for(cchanuser = chanuser->user->channel; cchanuser; cchanuser = cchanuser->next_chan) {
+        if(cchanuser == chanuser) {
+            if(last) 
+                last->next_chan = chanuser->next_chan;
+            else
+                chanuser->user->channel = chanuser->next_chan;
+            break;
+        } else
+            last = cchanuser;
     }
 
     //remove it from the channel's user-list