diff options
author | Marcus Brinkmann <[email protected]> | 2006-05-22 14:35:04 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2006-05-22 14:35:04 +0000 |
commit | 11544e7184b0eab8f3058ee3c5f87e94118a7bf3 (patch) | |
tree | 67f5b64a79b37cd78c866edd41bb9e6895deaddb /sm/keydb.c | |
parent | Added sample certificates. (diff) | |
download | gnupg-11544e7184b0eab8f3058ee3c5f87e94118a7bf3.tar.gz gnupg-11544e7184b0eab8f3058ee3c5f87e94118a7bf3.zip |
2006-05-19 Marcus Brinkmann <[email protected]>
* keydb.c (keydb_insert_cert): Do not lock here, but only check if
it is locked.
(keydb_store_cert): Lock here.
* keydb.h (keydb_delete): Accept new argument UNLOCK.
* keydb.c (keydb_delete): Likewise. Only unlock if this is set.
* delete.c (delete_one): Add new argument to invocation of
keydb_delete.
Diffstat (limited to 'sm/keydb.c')
-rw-r--r-- | sm/keydb.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sm/keydb.c b/sm/keydb.c index 17f04fe4b..15f5dbdac 100644 --- a/sm/keydb.c +++ b/sm/keydb.c @@ -696,9 +696,8 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert) else return gpg_error (GPG_ERR_GENERAL); - rc = lock_all (hd); - if (rc) - return rc; + if (!hd->locked) + return gpg_error (GPG_ERR_NOT_LOCKED); gpgsm_get_fingerprint (cert, GCRY_MD_SHA1, digest, NULL); /* kludge*/ @@ -759,7 +758,7 @@ keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert) * The current keyblock or cert will be deleted. */ int -keydb_delete (KEYDB_HANDLE hd) +keydb_delete (KEYDB_HANDLE hd, int unlock) { int rc = -1; @@ -785,7 +784,8 @@ keydb_delete (KEYDB_HANDLE hd) break; } - unlock_all (hd); + if (unlock) + unlock_all (hd); return rc; } @@ -1337,6 +1337,10 @@ keydb_store_cert (ksba_cert_t cert, int ephemeral, int *existed) if (ephemeral) keydb_set_ephemeral (kh, 1); + rc = lock_all (kh); + if (rc) + return rc; + rc = keydb_search_fpr (kh, fpr); if (rc != -1) { |