]> the.earth.li Git - onak.git/blobdiff - hash.c
Fix handling of other signature requirement
[onak.git] / hash.c
diff --git a/hash.c b/hash.c
index 03def747c2fb5d77707316a3eb797af267d811fe..9357831ccc9b352fd3531f8afc4ebaf54df58700 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -1,11 +1,19 @@
 /*
  * hash.c - hashing routines mainly used for caching key details.
  *
- * Jonathan McDowell <noodles@earth.li>
+ * Copyright 2000-2002 Jonathan McDowell <noodles@earth.li>
  *
- * Copyright 2000-2002 Project Purple
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; version 2 of the License.
  *
- * $Id: hash.c,v 1.9 2003/10/04 10:21:40 noodles Exp $
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 #include <stdio.h>
@@ -16,6 +24,7 @@
 #include "keystructs.h"
 #include "ll.h"
 #include "mem.h"
+#include "stats.h"
 
 /**
  *     hashtable - the hash table array.
@@ -27,6 +36,29 @@ static struct ll *hashtable[HASHSIZE];
  */
 static unsigned long elements;
 
+/**
+ *     free_statskey - free an stats key structure.
+ *     @key: The key to free.
+ *
+ *     Takes a stats key and frees the memory used by it and the linked list
+ *     of sigs under it. Doesn't recurse into the list as it's assumed all the
+ *     objects referenced also exist in the hash.
+ */
+static void free_statskey(struct stats_key *key)
+{
+       if (key != NULL) {
+               if (key->sigs != NULL) {
+                       llfree(key->sigs, NULL);
+                       key->sigs = NULL;
+               }
+               if (key->signs != NULL) {
+                       llfree(key->signs, NULL);
+                       key->signs = NULL;
+               }
+               free(key);
+       }
+}
+
 /**
  *     inithash - Initialize the hash ready for use.
  */
@@ -101,7 +133,7 @@ struct stats_key *createandaddtohash(uint64_t keyid)
        return tmpkey;
 }
 
-int stats_key_cmp(struct stats_key *key, uint64_t *keyid)
+static int stats_key_cmp(struct stats_key *key, uint64_t *keyid)
 {
        return !(key != NULL && key->keyid == *keyid);
 }
@@ -123,7 +155,7 @@ unsigned long hashelements(void)
        return elements;
 }
 
-struct ll *gethashtableentry(int entry)
+struct ll *gethashtableentry(unsigned int entry)
 {
        return hashtable[entry];
 }