int isnewchan;
/* (we don't see the first 2 params in cargc) */
- /* AK B #+lod+ 1017561154 +tnk eits ATJWu:o,AiW1a,Ag3lV,AiWnl,AE6oI :%*!@D577A90D.kabel.telenet.be */
+ /* AK B #+lod+ 1017561154 +tnk eits ATJWu:o,AiW1a,Ag3lV,AiWnl,AE6oI :%*!@123.example.net */
if (cargc<2) {
Error("channel",ERR_WARNING,"Burst message with only %d parameters",cargc);
/* Erm, parting a channel that's not there?? */
Error("channel",ERR_WARNING,"Nick %s left non-existent channel %s",np->nick,nextchan);
} else {
- /* Trigger hook *FIRST* */
- harg[0]=cp;
- triggerhook(HOOK_CHANNEL_PART,harg);
-
- delnickfromchannel(cp,np->numeric,1);
+ /* Skip ghost parts (confirmation for kick from target server). */
+ if (getnumerichandlefromchanhash(cp->users, np->numeric)) {
+ /* Trigger hook *FIRST* */
+ harg[0]=cp;
+ triggerhook(HOOK_CHANNEL_PART,harg);
+ delnickfromchannel(cp,np->numeric,1);
+ }
}
nextchan=pos;
}
int arg=2;
char *modestr;
unsigned long *lp;
- void *harg[3];
+ void *harg[4];
nick *np, *target;
int hooknum;
int changes=0;
-
+
if (cargc<2) {
return CMD_OK;
}
/* Set up the hook data */
harg[0]=cp;
harg[1]=np;
+ harg[3]=(void *)(long)(cp->flags);
/* Process the mode string one character at a time */
/* Maybe I'll write this more intelligently one day if I can comprehend the ircu code that does this */
int handleclearmodemsg(void *source, int cargc, char **cargv) {
channel *cp;
- void *harg[3];
+ void *harg[4];
nick *np, *target;
char *mcp;
unsigned long usermask=0;
harg[0]=cp;
harg[1]=np;
-
+ harg[3]=(void *)(long)(cp->flags);
+
for (mcp=cargv[1];*mcp;mcp++) {
switch (*mcp) {
case 'o':