Implement silence exceptions.
[ircu2.10.12-pk.git] / ircd / s_misc.c
index 631cf6bb9f29300888376ea1b314eeb42c84aaba..cdf6250275db6852b0b3a7c3f8959906b0d2f5ea 100644 (file)
@@ -202,6 +202,7 @@ void get_sockhost(struct Client *cptr, char *host)
 static void exit_one_client(struct Client* bcptr, const char* comment)
 {
   struct SLink *lp;
+  struct Ban *bp;
 
   if (cli_serv(bcptr) && cli_serv(bcptr)->client_list)  /* Was SetServerYXX called ? */
     ClearServerYXX(bcptr);      /* Removes server from server_list[] */
@@ -233,8 +234,10 @@ static void exit_one_client(struct Client* bcptr, const char* comment)
       del_invite(bcptr, lp->value.chptr);
 
     /* Clean up silencefield */
-    while ((lp = cli_user(bcptr)->silence))
-      del_silence(bcptr, lp->value.cp);
+    while ((bp = cli_user(bcptr)->silence)) {
+      cli_user(bcptr)->silence = bp->next;
+      free_ban(bp);
+    }
 
     /* Clean up snotice lists */
     if (MyUser(bcptr))