Lines Matching defs:lockdb
166 ** The lockdb structure.
173 ** The delayed opening (determined by <opened>) makes creating a lockdb
176 ** We export the notion of a lockdb, but hide the details of it. Most
216 static dav_lock *dav_fs_alloc_lock(dav_lockdb *lockdb, apr_datum_t key,
221 comb = apr_pcalloc(lockdb->info->pool, sizeof(*comb));
300 static dav_error * dav_fs_really_open_lockdb(dav_lockdb *lockdb)
304 if (lockdb->info->opened)
307 err = dav_dbm_open_direct(lockdb->info->pool,
308 lockdb->info->lockdb_path,
309 lockdb->ro,
310 &lockdb->info->db);
312 return dav_push_error(lockdb->info->pool,
320 lockdb->info->opened = 1;
334 dav_lockdb **lockdb)
355 *lockdb = &comb->pub;
359 return dav_fs_really_open_lockdb(*lockdb);
370 static void dav_fs_close_lockdb(dav_lockdb *lockdb)
372 if (lockdb->info->db != NULL)
373 dav_dbm_close(lockdb->info->db);
414 static dav_error * dav_fs_save_lock_record(dav_lockdb *lockdb, apr_datum_t key,
425 if (lockdb->ro) {
426 return dav_new_error(lockdb->info->pool,
428 "INTERNAL DESIGN ERROR: the lockdb was opened "
434 if ((err = dav_fs_really_open_lockdb(lockdb)) != NULL) {
443 (void) dav_dbm_delete(lockdb->info->db, key);
458 ptr = val.dptr = apr_pcalloc(lockdb->info->pool, val.dsize);
499 if ((err = dav_dbm_store(lockdb->info->db, key, val)) != NULL) {
501 return dav_push_error(lockdb->info->pool,
521 static dav_error * dav_fs_load_lock_record(dav_lockdb *lockdb, apr_datum_t key,
526 apr_pool_t *p = lockdb->info->pool;
540 if ((err = dav_fs_really_open_lockdb(lockdb)) != NULL) {
549 if (lockdb->info->db == NULL)
552 if ((err = dav_dbm_fetch(lockdb->info->db, key, &val)) != NULL)
634 dav_dbm_freedatum(lockdb->info->db, val);
649 dav_dbm_freedatum(lockdb->info->db, val);
657 return dav_fs_save_lock_record(lockdb, key, *direct, *indirect);
664 static dav_error * dav_fs_resolve(dav_lockdb *lockdb,
674 if ((err = dav_fs_load_lock_record(lockdb, indirect->key,
695 return dav_new_error(lockdb->info->pool,
924 dav_lockdb *lockdb,
928 apr_pool_t *p = lockdb->info->pool;
958 dav_lockdb *lockdb,
963 apr_pool_t *p = lockdb->info->pool;
974 static dav_error * dav_fs_create_lock(dav_lockdb *lockdb,
980 key = dav_fs_build_key(lockdb->info->pool, resource);
982 *lock = dav_fs_alloc_lock(lockdb,
991 static dav_error * dav_fs_get_locks(dav_lockdb *lockdb,
996 apr_pool_t *p = lockdb->info->pool;
1006 return dav_new_error(lockdb->info->pool,
1014 if ((err = dav_fs_load_lock_record(lockdb, key, DAV_CREATE_LIST,
1022 newlock = dav_fs_alloc_lock(lockdb, key, dp->locktoken);
1038 newlock = dav_fs_alloc_lock(lockdb, ip->key, ip->locktoken);
1042 if ((err = dav_fs_resolve(lockdb, ip, &dp, NULL, NULL)) != NULL) {
1068 static dav_error * dav_fs_find_lock(dav_lockdb *lockdb,
1081 key = dav_fs_build_key(lockdb->info->pool, resource);
1082 if ((err = dav_fs_load_lock_record(lockdb, key, DAV_CREATE_LIST,
1090 *lock = dav_fs_alloc_lock(lockdb, key, locktoken);
1104 *lock = dav_fs_alloc_lock(lockdb, ip->key, locktoken);
1113 if ((err = dav_fs_resolve(lockdb, ip, &dp,
1132 static dav_error * dav_fs_has_locks(dav_lockdb *lockdb,
1141 if ((err = dav_fs_really_open_lockdb(lockdb)) != NULL) {
1150 if (lockdb->info->db == NULL)
1153 key = dav_fs_build_key(lockdb->info->pool, resource);
1155 *locks_present = dav_dbm_exists(lockdb->info->db, key);
1160 static dav_error * dav_fs_append_locks(dav_lockdb *lockdb,
1165 apr_pool_t *p = lockdb->info->pool;
1171 key = dav_fs_build_key(lockdb->info->pool, resource);
1172 if ((err = dav_fs_load_lock_record(lockdb, key, 0, &dp, &ip)) != NULL) {
1228 if ((err = dav_fs_save_lock_record(lockdb, key, dp, ip)) != NULL) {
1236 && (err = dav_fs_add_locknull_state(lockdb, resource)) != NULL) {
1244 static dav_error * dav_fs_remove_lock(dav_lockdb *lockdb,
1254 key = dav_fs_build_key(lockdb->info->pool, resource);
1262 if ((err = dav_fs_load_lock_record(lockdb, key, DAV_CREATE_LIST,
1291 if ((err = dav_fs_save_lock_record(lockdb, key, dh, ih)) != NULL) {
1303 ** so there is no need to update the lockdb (and it won't find
1307 && (err = dav_fs_remove_locknull_member(lockdb->info->pool,
1335 static dav_error * dav_fs_refresh_locks(dav_lockdb *lockdb,
1351 key = dav_fs_build_key(lockdb->info->pool, resource);
1352 if ((err = dav_fs_load_lock_record(lockdb, key, DAV_CREATE_LIST,
1364 newlock = dav_fs_alloc_lock(lockdb, key, dp_scan->locktoken);
1382 && (err = dav_fs_save_lock_record(lockdb, key, dp, ip)) != NULL) {
1392 if ((err = dav_fs_resolve(lockdb, ip, &dp_scan,
1399 newlock = dav_fs_alloc_lock(lockdb, ip->key, dp_scan->locktoken);
1412 if ((err = dav_fs_save_lock_record(lockdb, ip->key, ref_dp,