From 118be50ab4ad0c1e94d930c3c635698e51413101 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 27 Oct 2009 11:55:34 -0700 Subject: [PATCH] Second part of the fix for bug 6828 - infinite timeout occurs when byte lock held outside of samba. Fixes case where a connection with a pending lock can me marked "idle", and ensures that the lock queue timeout is always recalculated. Jeremy. --- source/smbd/blocking.c | 9 +-------- 1 files changed, 1 insertions(+), 8 deletions(-) diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c index f4adc0d..41cbb4a 100644 --- a/source/smbd/blocking.c +++ b/source/smbd/blocking.c @@ -696,7 +696,6 @@ static void process_blocking_lock_queue(void) { struct timeval tv_curr = timeval_current(); blocking_lock_record *blr, *next = NULL; - bool recalc_timeout = False; /* * Go through the queue and see if we can get any of the locks. @@ -746,7 +745,6 @@ static void process_blocking_lock_queue(void) blocking_lock_reply_error(blr,NT_STATUS_ACCESS_DENIED); DLIST_REMOVE(blocking_lock_queue, blr); free_blocking_lock_record(blr); - recalc_timeout = True; continue; } @@ -771,7 +769,6 @@ static void process_blocking_lock_queue(void) blocking_lock_reply_error(blr,NT_STATUS_ACCESS_DENIED); DLIST_REMOVE(blocking_lock_queue, blr); free_blocking_lock_record(blr); - recalc_timeout = True; change_to_root_user(); continue; } @@ -797,7 +794,6 @@ static void process_blocking_lock_queue(void) DLIST_REMOVE(blocking_lock_queue, blr); free_blocking_lock_record(blr); - recalc_timeout = True; change_to_root_user(); continue; } @@ -833,13 +829,10 @@ static void process_blocking_lock_queue(void) blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT); DLIST_REMOVE(blocking_lock_queue, blr); free_blocking_lock_record(blr); - recalc_timeout = True; } } - if (recalc_timeout) { - recalc_brl_timeout(); - } + recalc_brl_timeout(); } /**************************************************************************** -- 1.5.4.3