From e87afc8c0624304411ecd5bc3ee8525a53aefa1f Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Fri, 25 Aug 2017 07:45:09 -0700 Subject: Allow forcibly adding idhash values outside of the range. This will allow us to use idhash to manage ephemeral ports (indexed by port), while also allowing us to insert managed ports. --- src/core/idhash.c | 13 ------------- tests/idhash.c | 19 ++++++------------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/src/core/idhash.c b/src/core/idhash.c index c0030f76..8651a3d6 100644 --- a/src/core/idhash.c +++ b/src/core/idhash.c @@ -246,10 +246,6 @@ nni_hash_insert(nni_idhash *h, uint64_t id, void *val) { size_t index; - if ((id < h->ih_minval) || (id > h->ih_maxval)) { - return (NNG_EINVAL); - } - // Try to resize. If we can't, but we still have room, go ahead // and store it. if ((nni_hash_resize(h) != 0) && (h->ih_count >= (h->ih_cap - 1))) { @@ -270,15 +266,6 @@ nni_hash_insert(nni_idhash *h, uint64_t id, void *val) ent->ihe_skips++; index = NNI_IDHASH_NEXTPROBE(h, index); } - - // If this was the old dynamic value, just bump it. - if (h->ih_dynval == id) { - h->ih_dynval++; - // Roll over... - if (h->ih_dynval == h->ih_maxval) { - h->ih_dynval = h->ih_minval; - } - } } int diff --git a/tests/idhash.c b/tests/idhash.c index 21f66c58..e4183e98 100644 --- a/tests/idhash.c +++ b/tests/idhash.c @@ -83,14 +83,6 @@ Main({ So(ptr == NULL); }); - Convey("Range checks work", { - char *bad = "bad"; - - nni_idhash_set_limits(h, 1, 10, 1); - So(nni_idhash_insert(h, 20, bad) == - NNG_EINVAL); - }); - Convey("64-bit hash values work", { char * huge = "huge"; void * ptr = NULL; @@ -175,11 +167,12 @@ Main({ So(id == 11); }); }); - Convey("We cannot insert bogus values", { - So(nni_idhash_insert(h, 1, &expect[0]) == - NNG_EINVAL); - So(nni_idhash_insert(h, 100, &expect[0]) == - NNG_EINVAL); + Convey("We can insert outside range forcibly", { + So(nni_idhash_insert(h, 1, &expect[0]) == 0); + So(nni_idhash_insert(h, 100, &expect[0]) == 0); + So(nni_idhash_alloc(h, &id, &expect[1]) == 0); + So(id >= 10); + So(id <= 13); }); }); }); -- cgit v1.2.3-70-g09d2