char *fakehost;
char *accountts;
char *accountflags;
- struct irc_in_addr ipaddress;
+ struct irc_in_addr ipaddress, ipaddress_canonical;
char *accountid;
unsigned long userid;
np->realname->nicks=np;
np->timestamp=timestamp;
- base64toip(cargv[cargc-3], &ipaddress);
- np->ipnode = refnode(iptree, &ipaddress, PATRICIA_MAXBITS);
+ memcpy(&(np->ipaddress), &ipaddress, sizeof(ipaddress));
+
+ ip_canonicalize_tunnel(&ipaddress_canonical, &ipaddress);
+ np->ipnode = refnode(iptree, &ipaddress_canonical, PATRICIA_MAXBITS);
node_increment_usercount(np->ipnode);
np->away=NULL;
np->accountts=0;
np->cloak_count = 0;
np->cloak_extra = NULL;
+ np->message = NULL;
if(cargc>=9) {
int sethostarg = 6, opernamearg = 6, accountarg = 6;
nick *np;
flag_t oldflags;
char *fakehost;
+ void *args[2];
if (cargc<2) {
Error("nick",ERR_WARNING,"Mode message with too few parameters");
oldflags=np->umodes;
setflags(&(np->umodes),UMODE_ALL,cargv[1],umodeflags,REJECT_NONE);
+ args[0] = np;
+ args[1] = (void *)oldflags;
+ triggerhook(HOOK_NICK_MODECHANGE, args);
+
if (strchr(cargv[1],'o')) { /* o always comes on its own when being set */
if(serverlist[myhub].flags & SMODE_OPERNAME) {
if((np->umodes & UMODE_OPER)) {