From owner-p4-projects@FreeBSD.ORG Thu Aug 9 19:10:22 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0238E16A46E; Thu, 9 Aug 2007 19:10:22 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B87D16A417 for ; Thu, 9 Aug 2007 19:10:21 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 894D013C4CE for ; Thu, 9 Aug 2007 19:10:21 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l79JALk6086513 for ; Thu, 9 Aug 2007 19:10:21 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l79JALVB086510 for perforce@freebsd.org; Thu, 9 Aug 2007 19:10:21 GMT (envelope-from fli@FreeBSD.org) Date: Thu, 9 Aug 2007 19:10:21 GMT Message-Id: <200708091910.l79JALVB086510@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 124966 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Aug 2007 19:10:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=124966 Change 124966 by fli@fli_nexus on 2007/08/09 19:09:21 Ignore case when comparing record names. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/record.c#4 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/record.c#4 (text+ko) ==== @@ -31,6 +31,7 @@ #include "debug.h" #include "log.h" #include "record.h" +#include "utf8.h" #define record_aquire(r) (r)->r_refcnt++; \ dprintf(DEBUG_REC, "Refcount on r=%x increased to %d",\ @@ -95,14 +96,17 @@ int record_get(struct records *recs, struct record **r, int flags, char *name) { - size_t len; + ssize_t len; struct record *rec; + char namlc[MDNS_RECORD_LEN+1]; MDNS_INIT_ASSERT(recs, r_magic); - len = strlen(name); - rec = hashtbl_find(&recs->r_recs, name, len); - + len = utf8_tolower(name, namlc, MDNS_RECORD_LEN); + if (len <= 0) + return (-1); + + rec = hashtbl_find(&recs->r_recs, namlc, len); if (rec == NULL && (flags & RECORD_NOINIT)) { *r = NULL; return (0); @@ -123,7 +127,7 @@ (*r)->r_flags = flags; TAILQ_INIT(&((*r)->r_list)); memcpy((*r)->r_name, name, len+1); - hashtbl_add(&recs->r_recs, (*r)->r_name, len, *r, 0); + hashtbl_add(&recs->r_recs, namlc, len, *r, HASHTBL_KEYDUP); } else { *r = rec; @@ -142,8 +146,9 @@ void record_release(struct record *r) { - size_t len; + ssize_t len; struct records *recs; + char namlc[MDNS_RECORD_LEN+1]; MDNS_INIT_ASSERT(r, r_magic); recs = r->r_recs; @@ -151,8 +156,8 @@ if (--r->r_refcnt == 0) { assert(TAILQ_EMPTY(&r->r_list) == 1); - len = strlen(r->r_name); - hashtbl_del(&recs->r_recs, r->r_name, len); + len = utf8_tolower(r->r_name, namlc, MDNS_RECORD_LEN); + hashtbl_del(&recs->r_recs, namlc, len); MDNS_INIT_UNSET(r, r_magic); if (!(r->r_flags & RECORD_NOALLOC)) free(r); @@ -193,12 +198,16 @@ record_find(struct records *recs, char *name) { struct record *r; - size_t len; + ssize_t len; + char namlc[MDNS_RECORD_LEN+1]; MDNS_INIT_ASSERT(recs, r_magic); - len = strlen(name); - r = hashtbl_find(&recs->r_recs, name, len); + len = utf8_tolower(name, namlc, MDNS_RECORD_LEN); + if (len <= 0) + return (NULL); + + r = hashtbl_find(&recs->r_recs, namlc, len); return (r); } @@ -367,12 +376,16 @@ struct record *r; struct record_type *rt; struct record_res *rr; - size_t len; + ssize_t len; + char namlc[MDNS_RECORD_LEN+1]; MDNS_INIT_ASSERT(recs, r_magic); - len = strlen(name); - r = hashtbl_find(&recs->r_recs, name, len); + len = utf8_tolower(name, namlc, MDNS_RECORD_LEN); + if (len <= 0) + return (NULL); + + r = hashtbl_find(&recs->r_recs, namlc, len); if (r == NULL) return (NULL); @@ -396,12 +409,16 @@ { struct record *r; struct record_type *rt; - size_t len; + ssize_t len; + char namlc[MDNS_RECORD_LEN+1]; MDNS_INIT_ASSERT(recs, r_magic); - len = strlen(name); - r = hashtbl_find(&recs->r_recs, name, len); + len = utf8_tolower(name, namlc, MDNS_RECORD_LEN); + if (len <= 0) + return (NULL); + + r = hashtbl_find(&recs->r_recs, namlc, len); if (r == NULL) return (NULL);