From 874d1627323641ed56c0cea5b5604c0536871aa6 Mon Sep 17 00:00:00 2001 From: phk Date: Mon, 12 Jan 2009 13:51:33 +0000 Subject: [PATCH] Ditch HSH_Compare() and just check the digest with memcmp() git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3507 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishd/cache_hash.c | 30 ------------------- varnish-cache/bin/varnishd/hash_classic.c | 10 +------ varnish-cache/bin/varnishd/hash_simple_list.c | 2 +- varnish-cache/bin/varnishd/hash_slinger.h | 1 - 4 files changed, 2 insertions(+), 41 deletions(-) diff --git a/varnish-cache/bin/varnishd/cache_hash.c b/varnish-cache/bin/varnishd/cache_hash.c index e8b28b4b..f95cd3f3 100644 --- a/varnish-cache/bin/varnishd/cache_hash.c +++ b/varnish-cache/bin/varnishd/cache_hash.c @@ -143,36 +143,6 @@ HSH_Freestore(struct object *o) } } -int -HSH_Compare(const struct sess *sp, const struct objhead *oh) -{ - int i; - unsigned u, v; - const char *b; - - CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); - CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC); - CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC); - i = sp->lhashptr - oh->hashlen; - if (i) - return (i); - b = oh->hash; - for (u = 0; u < sp->ihashptr; u += 2) { - v = pdiff(sp->hashptr[u], sp->hashptr[u + 1]); - i = memcmp(sp->hashptr[u], b, v); - if (i) - return (i); - b += v; - i = '#' - *b++; - if (i) - return (i); - } - assert(*b == '\0'); - b++; - assert(b == oh->hash + oh->hashlen); - return (0); -} - void HSH_Copy(const struct sess *sp, struct objhead *oh) { diff --git a/varnish-cache/bin/varnishd/hash_classic.c b/varnish-cache/bin/varnishd/hash_classic.c index 9f2ee04a..5265235d 100644 --- a/varnish-cache/bin/varnishd/hash_classic.c +++ b/varnish-cache/bin/varnishd/hash_classic.c @@ -132,15 +132,7 @@ hcl_lookup(const struct sess *sp, struct objhead *noh) Lck_Lock(&hp->mtx); VTAILQ_FOREACH(oh, &hp->head, hoh_list) { - if (sp->lhashptr < oh->hashlen) - continue; - if (sp->lhashptr > oh->hashlen) - break; - if (oh->hoh_digest < digest) - continue; - if (oh->hoh_digest > digest) - break; - i = HSH_Compare(sp, oh); + i = memcmp(oh->digest, noh->digest, sizeof oh->digest); if (i < 0) continue; if (i > 0) diff --git a/varnish-cache/bin/varnishd/hash_simple_list.c b/varnish-cache/bin/varnishd/hash_simple_list.c index 3a8a89ce..bc604ff2 100644 --- a/varnish-cache/bin/varnishd/hash_simple_list.c +++ b/varnish-cache/bin/varnishd/hash_simple_list.c @@ -75,7 +75,7 @@ hsl_lookup(const struct sess *sp, struct objhead *noh) CHECK_OBJ_NOTNULL(noh, OBJHEAD_MAGIC); Lck_Lock(&hsl_mtx); VTAILQ_FOREACH(oh, &hsl_head, hoh_list) { - i = HSH_Compare(sp, oh); + i = memcmp(oh->digest, noh->digest, sizeof oh->digest); if (i < 0) continue; if (i > 0) diff --git a/varnish-cache/bin/varnishd/hash_slinger.h b/varnish-cache/bin/varnishd/hash_slinger.h index d46830e1..508bb69d 100644 --- a/varnish-cache/bin/varnishd/hash_slinger.h +++ b/varnish-cache/bin/varnishd/hash_slinger.h @@ -51,7 +51,6 @@ struct hash_slinger { /* cache_hash.c */ void HSH_Prealloc(struct sess *sp); void HSH_Freestore(struct object *o); -int HSH_Compare(const struct sess *sp, const struct objhead *o); void HSH_Copy(const struct sess *sp, struct objhead *o); struct object *HSH_Lookup(struct sess *sp); void HSH_Unbusy(const struct sess *sp); -- 2.39.5