]> jfr.im git - irc/quakenet/newserv.git/blobdiff - nick/nick.c
nickwatch: Implement hook for messages/notices.
[irc/quakenet/newserv.git] / nick / nick.c
index edd557cb9fd0aa81fe36b53ed2372260188eabff..1b7dcadf85fe6d88334603ac7d3df421efc0933c 100644 (file)
@@ -12,6 +12,7 @@
 #include "../server/server.h"
 #include "../parser/parser.h"
 #include "../lib/version.h"
+#include "../lib/ccassert.h"
 #include "../core/nsmalloc.h"
 
 #include <stdlib.h>
@@ -20,6 +21,8 @@
 
 MODULE_VERSION("");
 
+CCASSERT(sizeof(host) == sizeof(realname));
+
 const flag umodeflags[] = {
    { 'i', UMODE_INV },
    { 'w', UMODE_WALLOPS },
@@ -35,6 +38,8 @@ const flag umodeflags[] = {
    { 'R', UMODE_REGPRIV },
    { 'I', UMODE_HIDEIDLE },
    { 'P', UMODE_PARANOID },
+   { 'q', UMODE_COMCHANS },
+   { 'Q', UMODE_COMCHANSRESTR },
    { 'C', UMODE_CLOAKED },
    { '\0', 0 } };
 
@@ -66,7 +71,6 @@ void _init() {
     for (anp=authnametable[i];anp;anp=anp->next)
       anp->nicks=NULL;  
 
-  initnickalloc();
   initnickhelpers();
   memset(nicktable,0,sizeof(nicktable));
   memset(servernicks,0,sizeof(servernicks));
@@ -214,6 +218,7 @@ void deletenick(nick *np) {
   freesstring(np->shident); /* freesstring(NULL) is OK */
   freesstring(np->sethost); 
   freesstring(np->opername); 
+  freesstring(np->message);
 
   node_decrement_usercount(np->ipnode);
   derefnode(iptree, np->ipnode);
@@ -432,6 +437,7 @@ nick *getnickbynumericstr(char *numericstr) {
   return getnickbynumeric(numerictolong(numericstr,5));
 }
 
+
 #endif
 
 int canseeuser(nick *np, nick *cloaked)
@@ -462,6 +468,9 @@ void clearcloaktargets(nick *cloaked)
   nick *tnp;
   int j;
 
+  if (cloaked->cloak_count == 0)
+    return;
+
   for(j=0;j<NICKHASHSIZE;j++)
     for(tnp=nicktable[j];tnp;tnp=tnp->next)
       if (tnp->cloak_extra == cloaked)