]> jfr.im git - irc/quakenet/newserv.git/blobdiff - nick/nick.c
Merge default into chanserv-live.
[irc/quakenet/newserv.git] / nick / nick.c
index b08e854a732fd00dab86719bb33a11be453c3238..f04f1df1a2597487bd3f5e1508b3f8b5330965ee 100644 (file)
@@ -51,7 +51,7 @@ const flag accountflags[] = {
    { 'd', AFLAG_DEVELOPER },
    { '\0', 0 } };
 
-#define nickhash(x)       ((crc32i(x))%NICKHASHSIZE)
+#define nickhash(x)       ((irc_crc32i(x))%NICKHASHSIZE)
 
 nick *nicktable[NICKHASHSIZE];
 nick **servernicks[MAXSERVERS];
@@ -79,7 +79,7 @@ void _init() {
    * before we register all our hooks which would otherwise get called
    * during the disconnect. */
   if (connected) {
-    irc_send("%s SQ %s 0 :Resync [adding nick support]",mynumeric->content,myserver->content); irc_disconnected();
+    irc_send("%s SQ %s 0 :Resync [adding nick support]",mynumeric->content,myserver->content); irc_disconnected(0);
   }
   
   /* Register our hooks */
@@ -175,6 +175,9 @@ void handleserverchange(int hooknum, void *arg) {
 void deletenick(nick *np) {
   nick **nh;
 
+  /* Fire a pre-lostnick trigger to allow hooks to check the channels etc. of a lost nick */
+  triggerhook(HOOK_NICK_PRE_LOSTNICK, np);
+
   /* Fire the hook.  This will deal with removal from channels etc. */
   triggerhook(HOOK_NICK_LOSTNICK, np);
   
@@ -218,6 +221,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);