X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb.c;h=347b406bd7daf0a61fd23280132192bf7983567c;hb=a8b85fe447aaf5520ba259ab9eeb86a7f3446763;hp=3fe3d34d85afe8632e9426b2e08a3ea23bdb897e;hpb=5913c95f2c7abf4c3cb06e27d384d80fb4c83547;p=onak.git diff --git a/keydb.c b/keydb.c index 3fe3d34..347b406 100644 --- a/keydb.c +++ b/keydb.c @@ -4,6 +4,8 @@ * Jonathan McDowell * * Copyright 2002 Project Purple + * + * $Id: keydb.c,v 1.9 2003/06/04 20:57:08 noodles Exp $ */ /** @@ -95,28 +97,22 @@ struct ll *getkeysigs(uint64_t keyid) struct ll *cached_getkeysigs(uint64_t keyid) { struct stats_key *key = NULL; + struct stats_key *signedkey = NULL; + struct ll *cursig = NULL; if (keyid == 0) { return NULL; } - key = findinhash(keyid); - if (key == NULL) { - key = malloc(sizeof(*key)); - if (key != NULL) { - key->keyid = keyid; - key->colour = 0; - key->parent = 0; - key->sigs = NULL; - key->gotsigs = false; - addtohash(key); - } else { - perror("cached_getkeysigs()"); - return NULL; - } - } + key = createandaddtohash(keyid); + if (key->gotsigs == false) { key->sigs = getkeysigs(key->keyid); + for (cursig = key->sigs; cursig != NULL; + cursig = cursig->next) { + signedkey = (struct stats_key *) cursig->object; + signedkey->signs = lladd(signedkey->signs, key); + } key->gotsigs = true; }