X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb.c;h=7d3310821b4c97febed997c33db58913a6a2f9f0;hb=3a4a4af9f18efe59713deaec8a455cc825470865;hp=16217823e543b4e0cc827aca6fbb58e660514421;hpb=a57a146ebc3f15f1ba2dfe8ecb9b59702fb8f799;p=onak.git diff --git a/keydb.c b/keydb.c index 1621782..7d33108 100644 --- a/keydb.c +++ b/keydb.c @@ -24,6 +24,7 @@ #include "mem.h" #include "merge.h" #include "parsekey.h" +#include "sendsync.h" #ifdef NEED_KEYID2UID /** @@ -81,7 +82,7 @@ struct ll *getkeysigs(uint64_t keyid, bool *revoked) sigs = keysigs(sigs, uids->sigs); } if (revoked != NULL) { - *revoked = (publickey->revocations != NULL); + *revoked = publickey->revoked; } free_publickey(publickey); } @@ -156,6 +157,7 @@ uint64_t getfullkeyid(uint64_t keyid) /** * update_keys - Takes a list of public keys and updates them in the DB. * @keys: The keys to update in the DB. + * @sendsync: Should we send a sync mail to our peers. * * Takes a list of keys and adds them to the database, merging them with * the key in the database if it's already present there. The key list is @@ -163,7 +165,7 @@ uint64_t getfullkeyid(uint64_t keyid) * we had before to what we have now (ie the set of data that was added to * the DB). Returns the number of entirely new keys added. */ -int update_keys(struct openpgp_publickey **keys) +int update_keys(struct openpgp_publickey **keys, bool sendsync) { struct openpgp_publickey *curkey = NULL; struct openpgp_publickey *oldkey = NULL; @@ -186,7 +188,7 @@ int update_keys(struct openpgp_publickey **keys) */ if (oldkey != NULL) { merge_keys(oldkey, curkey); - if (curkey->revocations == NULL && + if (curkey->sigs == NULL && curkey->uids == NULL && curkey->subkeys == NULL) { if (prev == NULL) { @@ -215,6 +217,10 @@ int update_keys(struct openpgp_publickey **keys) intrans = false; } + if (sendsync && keys != NULL) { + sendkeysync(*keys); + } + return newkeys; } #endif /* NEED_UPDATEKEYS */