s3:locking:posix: adapt use of dbrwrap_fetch() to new NTSTATUS semantics
[ira/wip.git] / source3 / locking / posix.c
index a28744a76f25dd47829c2f63346371e47b2e6b5c..3a8b1635d8c887b6b7eaa3f43dba796dea0db576 100644 (file)
@@ -513,14 +513,18 @@ static int get_windows_lock_ref_count(files_struct *fsp)
                posix_pending_close_db, talloc_tos(),
                locking_ref_count_key_fsp(fsp, &tmp), &dbuf);
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
+               goto done;
+       }
+
        SMB_ASSERT(NT_STATUS_IS_OK(status));
 
-       if (dbuf.dsize != 0) {
-               SMB_ASSERT(dbuf.dsize == sizeof(lock_ref_count));
-               memcpy(&lock_ref_count, dbuf.dptr, sizeof(lock_ref_count));
-               TALLOC_FREE(dbuf.dptr);
-       }
+       SMB_ASSERT(dbuf.dsize == sizeof(lock_ref_count));
+
+       memcpy(&lock_ref_count, dbuf.dptr, sizeof(lock_ref_count));
+       TALLOC_FREE(dbuf.dptr);
 
+done:
        DEBUG(10,("get_windows_lock_count for file %s = %d\n",
                  fsp_str_dbg(fsp), lock_ref_count));
 
@@ -623,6 +627,11 @@ static size_t get_posix_pending_close_entries(TALLOC_CTX *mem_ctx,
                posix_pending_close_db, mem_ctx, fd_array_key_fsp(fsp),
                &dbuf);
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
+               *entries = NULL;
+               return 0;
+       }
+
        SMB_ASSERT(NT_STATUS_IS_OK(status));
 
        if (dbuf.dsize == 0) {