Index: modules/dav/fs/lock.c =================================================================== --- modules/dav/fs/lock.c (revision 1665752) +++ modules/dav/fs/lock.c (working copy) @@ -619,7 +619,8 @@ ip->key.dptr = apr_pmemdup(p, val.dptr + offset, ip->key.dsize); offset += ip->key.dsize; - if (!dav_fs_lock_expired(ip->timeout)) { + if (!dav_fs_lock_expired(ip->timeout) + && dav_dbm_exists(lockdb->info->db, ip->key)) { ip->next = *indirect; *indirect = ip; } @@ -1054,6 +1055,7 @@ else { /* DAV_GETLOCKS_PARTIAL */ newlock->rectype = DAV_LOCKREC_INDIRECT_PARTIAL; + newlock->timeout = ip->timeout; } /* hook into the result list */ Index: modules/dav/lock/locks.c =================================================================== --- modules/dav/lock/locks.c (revision 1665752) +++ modules/dav/lock/locks.c (working copy) @@ -646,7 +646,8 @@ ip->key.dptr = apr_pmemdup(p, val.dptr + offset, ip->key.dsize); offset += ip->key.dsize; - if (!dav_generic_lock_expired(ip->timeout)) { + if (!dav_generic_lock_expired(ip->timeout) + && dav_dbm_exists(lockdb->info->db, ip->key)) { ip->next = *indirect; *indirect = ip; } @@ -847,6 +848,7 @@ else { /* DAV_GETLOCKS_PARTIAL */ newlock->rectype = DAV_LOCKREC_INDIRECT_PARTIAL; + newlock->timeout = ip->timeout; } /* hook into the result list */