summaryrefslogtreecommitdiffstats
path: root/src/lib/kadm5/srv/server_init.c
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2002-10-08 20:20:29 +0000
committerTom Yu <tlyu@mit.edu>2002-10-08 20:20:29 +0000
commit794f0d854711dbee20ca8cfb3ec2ae729c41910c (patch)
tree579a3b3f9f9c9851ec06cd8a188c7707b5ce2db4 /src/lib/kadm5/srv/server_init.c
parent2d59b5f412e0eacf4c89008b14df8251a92cae09 (diff)
downloadkrb5-794f0d854711dbee20ca8cfb3ec2ae729c41910c.tar.gz
krb5-794f0d854711dbee20ca8cfb3ec2ae729c41910c.tar.xz
krb5-794f0d854711dbee20ca8cfb3ec2ae729c41910c.zip
libkadm5 should allow persistent locks
libkadm5 should have a way to persistently lock the databases to avoid wasting time on closing and reopening. These patches implement persistent exclusive locks for local access only. ticket: new target_version: 1.3 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14914 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kadm5/srv/server_init.c')
-rw-r--r--src/lib/kadm5/srv/server_init.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/lib/kadm5/srv/server_init.c b/src/lib/kadm5/srv/server_init.c
index 31dd71ad8..f2cbc991f 100644
--- a/src/lib/kadm5/srv/server_init.c
+++ b/src/lib/kadm5/srv/server_init.c
@@ -306,6 +306,34 @@ kadm5_ret_t kadm5_destroy(void *server_handle)
return KADM5_OK;
}
+kadm5_ret_t kadm5_lock(void *server_handle)
+{
+ kadm5_server_handle_t handle = server_handle;
+ kadm5_ret_t ret;
+
+ CHECK_HANDLE(server_handle);
+ ret = osa_adb_open_and_lock(handle->policy_db, OSA_ADB_EXCLUSIVE);
+ if (ret)
+ return ret;
+ ret = krb5_db_lock(handle->context, KRB5_LOCKMODE_EXCLUSIVE);
+ if (ret)
+ return ret;
+}
+
+kadm5_ret_t kadm5_unlock(void *server_handle)
+{
+ kadm5_server_handle_t handle = server_handle;
+ kadm5_ret_t ret;
+
+ CHECK_HANDLE(server_handle);
+ ret = osa_adb_close_and_unlock(handle->policy_db);
+ if (ret)
+ return ret;
+ ret = krb5_db_unlock(handle->context);
+ if (ret)
+ return ret;
+}
+
kadm5_ret_t kadm5_flush(void *server_handle)
{
kadm5_server_handle_t handle = server_handle;