}
if (db4_fetch_key_id(dbctx, keyid, &publickey, true) == 0) {
- db4_endtrans(dbctx);
+ if (!intrans) {
+ db4_endtrans(dbctx);
+ }
return 1;
}
DB_GET_BOTH);
if (ret == 0) {
- ret = cursor->c_del(cursor, 0);
+ cursor->c_del(cursor, 0);
}
/* New style just uses the fingerprint as the data */
DB_GET_BOTH);
if (ret == 0) {
- ret = cursor->c_del(cursor, 0);
+ cursor->c_del(cursor, 0);
}
/* New style mapping to fingerprint */
DB_GET_BOTH);
if (ret == 0) {
- ret = cursor->c_del(cursor, 0);
+ cursor->c_del(cursor, 0);
}
/* Remove 32 bit keyid -> fingerprint mapping */
data.data = fingerprint.fp;
data.size = fingerprint.length;
- ret = cursor->c_get(cursor,
+ ret = cursor64->c_get(cursor64,
&key,
&data,
DB_GET_BOTH);
if (ret == 0) {
- ret = cursor->c_del(cursor, 0);
+ ret = cursor64->c_del(cursor64, 0);
}
if (ret != 0 && ret != DB_NOTFOUND) {
DB_GET_BOTH);
if (ret == 0) {
- ret = cursor->c_del(cursor, 0);
+ cursor->c_del(cursor, 0);
}
/* Then delete new style fingerprint mapping */
publickey = NULL;
if (!deadlock) {
+ key.data = fingerprint.fp;
+ key.size = fingerprint.length;
+
+ keydb_fp(privctx, &fingerprint)->del(keydb_fp(privctx,
+ &fingerprint),
+ privctx->txn,
+ &key,
+ 0); /* flags */
+
+ /* Delete old style 64 bit keyid */
key.data = &keyid;
key.size = sizeof(keyid);