cache: make record/hostname lookup case-insensitive
authorFelix Fietkau <nbd@nbd.name>
Wed, 18 Oct 2023 12:44:45 +0000 (14:44 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 18 Oct 2023 12:44:46 +0000 (14:44 +0200)
Fixes lookup issues on hosts that announce themselves with uppercase
in their hostname

Signed-off-by: Felix Fietkau <nbd@nbd.name>
cache.c

diff --git a/cache.c b/cache.c
index 046e8b91f1828577cc4789f6da0b533254e7f774..8c851a39a9cce59e3020cb926e13c90d3df822d1 100644 (file)
--- a/cache.c
+++ b/cache.c
 
 static struct uloop_timeout cache_gc;
 struct avl_tree services;
-AVL_TREE(records, avl_strcmp, true, NULL);
+
+static int avl_strcasecmp(const void *k1, const void *k2, void *ptr)
+{
+       return strcasecmp(k1, k2);
+}
+
+AVL_TREE(records, avl_strcasecmp, true, NULL);
 
 static void
 cache_record_free(struct cache_record *r)
@@ -111,7 +117,7 @@ cache_gc_timer(struct uloop_timeout *timeout)
 int
 cache_init(void)
 {
-       avl_init(&services, avl_strcmp, true, NULL);
+       avl_init(&services, avl_strcasecmp, true, NULL);
 
        cache_gc.cb = cache_gc_timer;
        uloop_timeout_set(&cache_gc, 10000);