]> jfr.im git - irc/quakenet/newserv.git/commitdiff
r465@blue (orig r440): splidge | 2006-02-28 14:02:02 +0000
authorChris Porter <redacted>
Wed, 8 Mar 2006 17:08:00 +0000 (17:08 +0000)
committerChris Porter <redacted>
Wed, 8 Mar 2006 17:08:00 +0000 (17:08 +0000)
 Changed the join handler such that if the last user is kicked from a
 channel the (now invalid) cp isn't used any more.

chanserv/chanservnetevents.c

index 0b0d5dd63dae35431f8e9b8a564c87b8a4c80428..7d597d1a6066c6b81542fdbfe0ff44255d9e14cd 100644 (file)
@@ -164,6 +164,7 @@ void cs_handlejoin(int hooknum, void *arg) {
   regchan *rcp;
   reguser *rup;
   regchanuser *rcup=NULL;
+  chanindex *cip;
   int iscreate;
   int dowelcome=0;
 
@@ -173,6 +174,8 @@ void cs_handlejoin(int hooknum, void *arg) {
   if (!(rcp=cp->index->exts[chanservext]) || CIsSuspended(rcp))
     return;
 
+  cip=cp->index;
+
   rcp->tripjoins++;
   rcp->totaljoins++;
   if (cp->users->totalusers > rcp->maxusers)
@@ -213,8 +216,8 @@ void cs_handlejoin(int hooknum, void *arg) {
 
   /* Check for +b chanlev flag */
   if (!IsService(np) && rcup && CUIsBanned(rcup)) {
-    cs_banuser(NULL, cp->index, np, NULL);
-    cs_timerfunc(cp->index);
+    cs_banuser(NULL, cip, np, NULL);
+    cs_timerfunc(cip);
     return;
   } 
 
@@ -223,8 +226,8 @@ void cs_handlejoin(int hooknum, void *arg) {
     if (IsInviteOnly(cp) || (IsRegOnly(cp) && !IsAccount(np))) {
       localkickuser(chanservnick,cp,np,"Authorised users only.");
     } else {      
-      cs_banuser(NULL, cp->index, np, "Authorised users only.");
-      cs_timerfunc(cp->index);
+      cs_banuser(NULL, cip, np, "Authorised users only.");
+      cs_timerfunc(cip);
     }
     return;
   }
@@ -284,12 +287,12 @@ void cs_handlejoin(int hooknum, void *arg) {
   switch(dowelcome) {
 
   case 1: if (rcp->welcome)
-            chanservsendmessage(np,"[%s] %s",cp->index->name->content, rcp->welcome->content);
+            chanservsendmessage(np,"[%s] %s",cip->name->content, rcp->welcome->content);
           break;
     
   case 2: if (chanservnick) {
             /* Channel x is protected by y */
-            chanservstdmessage(np,QM_PROTECTED,cp->index->name->content,chanservnick->nick);
+            chanservstdmessage(np,QM_PROTECTED,cip->name->content,chanservnick->nick);
           }
           break;
   }