X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb.c;h=7cfb6a13736c04b614e1d56ea52fa0b634c626de;hb=6a721665f41611f80cb878237b5d7fa650ccbe20;hp=406f857147aa29391083db351b3f77d36430c338;hpb=dd37c5ea8e61e9bec43d01ff1551202bea7402dc;p=onak.git diff --git a/keydb.c b/keydb.c index 406f857..7cfb6a1 100644 --- a/keydb.c +++ b/keydb.c @@ -95,29 +95,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; - key->disabled = 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; }