1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-08 13:49:29 +03:00

if our lock spin code fails then return the first error code, not the

last one. This is what caused the lock1 and lock2 tests to fail.
This commit is contained in:
Andrew Tridgell
-
parent 775404fe46
commit e7ae8003cb

View File

@ -153,20 +153,27 @@ NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid
{
int j, maxj = lp_lock_spin_count();
int sleeptime = lp_lock_sleep_time();
NTSTATUS status;
NTSTATUS status, ret;
if (maxj <= 0)
maxj = 1;
ret = NT_STATUS_OK; /* to keep dumb compilers happy */
for (j = 0; j < maxj; j++) {
status = do_lock(fsp, conn, lock_pid, count, offset, lock_type);
if (!NT_STATUS_EQUAL(status, NT_STATUS_LOCK_NOT_GRANTED) &&
!NT_STATUS_EQUAL(status, NT_STATUS_FILE_LOCK_CONFLICT))
break;
!NT_STATUS_EQUAL(status, NT_STATUS_FILE_LOCK_CONFLICT)) {
return status;
}
/* if we do fail then return the first error code we got */
if (j == 0) {
ret = status;
}
if (sleeptime)
sys_usleep(sleeptime);
}
return status;
return ret;
}
/****************************************************************************