]> jfr.im git - solanum.git/blobdiff - ircd/hostmask.c
modules/m_sasl.c: use IsSecure() instead of IsSSL()
[solanum.git] / ircd / hostmask.c
index 1a154130d24a63d6383fc88a3cfd1172cb4225e1..437c51f7e52b6a9a035b5105773ac87bb24edc5a 100644 (file)
@@ -478,13 +478,8 @@ find_dline(struct sockaddr *addr, int aftype)
        return NULL;
 }
 
-/* void find_exact_conf_by_address(const char*, int, const char *)
- * Input:
- * Output: ConfItem if found
- * Side-effects: None
- */
 struct ConfItem *
-find_exact_conf_by_address(const char *address, int type, const char *username)
+find_exact_conf_by_address_filtered(const char *address, int type, const char *username, bool (*filter)(struct ConfItem *))
 {
        int masktype, bits;
        unsigned long hv;
@@ -514,6 +509,9 @@ find_exact_conf_by_address(const char *address, int type, const char *username)
                                arec->masktype == masktype &&
                                (arec->username == NULL || username == NULL ? arec->username == username : !irccmp(arec->username, username)))
                {
+                       if (filter && !filter(arec->aconf))
+                               continue;
+
                        if (masktype == HM_HOST)
                        {
                                if (!irccmp(arec->Mask.hostname, address))
@@ -530,6 +528,17 @@ find_exact_conf_by_address(const char *address, int type, const char *username)
        return NULL;
 }
 
+/* void find_exact_conf_by_address(const char*, int, const char *)
+ * Input:
+ * Output: ConfItem if found
+ * Side-effects: None
+ */
+struct ConfItem *
+find_exact_conf_by_address(const char *address, int type, const char *username)
+{
+       return find_exact_conf_by_address_filtered(address, type, username, NULL);
+}
+
 /* void add_conf_by_address(const char*, int, const char *,
  *         struct ConfItem *aconf)
  * Input: