From: Jeremy Allison Date: Tue, 27 Oct 2009 18:55:34 +0000 (-0700) Subject: Second part of the fix for bug 6828 - infinite timeout occurs when byte lock held... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31bb625273aac6e3e19f95465580b3bcb1885549;p=thirdparty%2Fsamba.git 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. --- diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c index f4adc0d047d..41cbb4a128c 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(); } /****************************************************************************