]> jfr.im git - irc/quakenet/newserv.git/blobdiff - helpmod2/hban.c
CHANSERV: fix issue where chanserv_relay doesn't wait for db to be loaded before...
[irc/quakenet/newserv.git] / helpmod2 / hban.c
index 51424bd594a9488c39a2051097eb6848925a29a6..848c2bf5f6968dbeef3384b0f4e3678e3184d51c 100644 (file)
@@ -39,8 +39,8 @@ hban *hban_add(const char* pat, const char* rsn, time_t exp, int now)
 
     { /* additional logic here */
         huser* tmpu;
-        for (tmpu = husers;tmpu;tmpu = tmpu->next)
-            if (nickmatchban(tmpu->real_user, tmp) && !IsOper(tmpu->real_user))
+       for (tmpu = husers;tmpu;tmpu = tmpu->next)
+           if (nickmatchban(tmpu->real_user, tmp, 0) && !IsOper(tmpu->real_user))
             {
                 hchannel *assert_hchan = NULL;
                 while (tmpu->hchannels)
@@ -52,20 +52,17 @@ hban *hban_add(const char* pat, const char* rsn, time_t exp, int now)
                     }
                     assert_hchan = tmpu->hchannels->hchan;
                     helpmod_setban(tmpu->hchannels->hchan, bantostring(ptr->real_ban), HELPMOD_BAN_DURATION, MCB_ADD, now);
-                    helpmod_kick(tmpu->hchannels->hchan, tmpu, hban_get_reason(ptr));
+                    helpmod_kick(tmpu->hchannels->hchan, tmpu, "%s", hban_get_reason(ptr));
                 }
-            }
+           }
     }
 
     return ptr;
 }
 
-hban *hban_huser(void *target, const char* rsn, time_t exp, int now)
+hban *hban_huser(huser *husr, const char* rsn, time_t exp, int now)
 {
-    const char *banmask;
-    huser *husr = (huser*)target;
-
-    banmask = hban_ban_string(husr->real_user, HBAN_HOST);
+    const char *banmask = hban_ban_string(husr->real_user, HBAN_HOST);
 
     return hban_add(banmask, rsn, exp, now);
 }
@@ -117,7 +114,7 @@ hban *hban_check(nick *nck)
 {
     hban *ptr = hbans;
     for (;ptr;ptr = ptr->next)
-        if (nickmatchban(nck, ptr->real_ban))
+        if (nickmatchban(nck, ptr->real_ban, 0))
             return ptr;
     return NULL;
 }
@@ -168,13 +165,18 @@ const char *hban_ban_string(nick *nck, int banflags)
 
     strcat(buffer, "@");
 
-    if ((banflags & HBAN_HOST) && IsAccount(nck))
+    if ((banflags & HBAN_HOST) && IsAccount(nck) && IsHideHost(nck))
     {
         strcat(buffer, nck->authname);
         strcat(buffer, ".users.quakenet.org");
     }
-    else if ((banflags & HBAN_REAL_HOST) || ((banflags & HBAN_HOST) && !IsAccount(nck)))
+    else if ((banflags & HBAN_REAL_HOST) || ((banflags & HBAN_HOST)))
+    {
+      if (IsSetHost(nck))
+        strcat(buffer, nck->sethost->content);
+      else
         strcat(buffer, nck->host->name->content);
+    }
     else
         strcat(buffer, "*");