]> jfr.im git - irc/quakenet/newserv.git/blobdiff - nick/nickhandlers.c
CHANSERV: remove accidental sendemail from SETEMAIL command.
[irc/quakenet/newserv.git] / nick / nickhandlers.c
index 74cc608dd7abc4c58b74c674d0c34e11be9d4a0e..6ab0d93d554be131863ffbbef9d457b987566f1d 100644 (file)
@@ -29,7 +29,7 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
   char *fakehost;
   char *accountts;
   char *accountflags;
-  struct irc_in_addr ipaddress;
+  struct irc_in_addr ipaddress, ipaddress_canonical;
   char *accountid;
   unsigned long userid;
   
@@ -144,8 +144,10 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
     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;
@@ -160,6 +162,7 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
     np->accountts=0;
     np->cloak_count = 0;
     np->cloak_extra = NULL;
+    np->message = NULL;
     if(cargc>=9) {
       int sethostarg = 6, opernamearg = 6, accountarg = 6;
 
@@ -281,6 +284,7 @@ int handleusermodemsg(void *source, int cargc, char **cargv) {
   nick *np;
   flag_t oldflags;
   char *fakehost;
+  void *args[2];
   
   if (cargc<2) {
     Error("nick",ERR_WARNING,"Mode message with too few parameters");
@@ -303,6 +307,10 @@ int handleusermodemsg(void *source, int cargc, char **cargv) {
     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)) {