Optimize order of checks in if() to minimize calls to match_it().
[ircu2.10.12-pk.git] / ircd / send.c
index 728edaa32a216866085c7ced6f8407e8da590389..1afbaec34ccf12c7a2ebfb791c8aa704f9994729 100644 (file)
@@ -669,6 +669,7 @@ void sendwallto_group_butone(struct Client *from, int type, struct Client *one,
   struct DLink *lp;
   char *prefix=NULL;
   char *tok=NULL;
+  int his_wallops;
   int i;
 
   vd.vd_format = pattern;
@@ -695,15 +696,15 @@ void sendwallto_group_butone(struct Client *from, int type, struct Client *one,
   va_end(vd.vd_args);
 
   /* send buffer along! */
+  his_wallops = feature_bool(FEAT_HIS_WALLOPS);
   for (i = 0; i <= HighestFd; i++)
   {
     if (!(cptr = LocalClientArray[i]) ||
        (cli_fd(cli_from(cptr)) < 0) ||
-       (type == WALL_DESYNCH && !HasFlag(cptr, FLAG_DEBUG)) ||
+       (type == WALL_DESYNCH && !SendDebug(cptr)) ||
        (type == WALL_WALLOPS &&
-         (!HasFlag(cptr, FLAG_WALLOP) || (feature_bool(FEAT_HIS_WALLOPS) &&
-                                          !IsAnOper(cptr)))) ||
-        (type == WALL_WALLUSERS && !HasFlag(cptr, FLAG_WALLOP)))
+         (!SendWallops(cptr) || (his_wallops && !IsAnOper(cptr)))) ||
+        (type == WALL_WALLUSERS && !SendWallops(cptr)))
       continue; /* skip it */
     send_buffer(cptr, mb, 1);
   }
@@ -760,9 +761,9 @@ void sendcmdto_match_butone(struct Client *from, const char *cmd,
   /* send buffer along */
   bump_sentalong(one);
   for (cptr = GlobalClientList; cptr; cptr = cli_next(cptr)) {
-    if (!IsRegistered(cptr) || IsServer(cptr) ||
-       !match_it(from, cptr, to, who) || cli_fd(cli_from(cptr)) < 0 ||
-       cli_sentalong(cptr) == sentalong_marker)
+    if (!IsRegistered(cptr) || IsServer(cptr) || cli_fd(cli_from(cptr)) < 0 ||
+        cli_sentalong(cptr) == sentalong_marker ||
+        !match_it(from, cptr, to, who))
       continue; /* skip it */
     cli_sentalong(cptr) = sentalong_marker;