summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/blocking.c44
1 files changed, 24 insertions, 20 deletions
diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index 02091d18ef..f3649159c9 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -575,37 +575,41 @@ void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lo
blocking_lock_record *blr, *next = NULL;
for(blr = blocking_lock_queue; blr; blr = next) {
+ unsigned char locktype = 0;
+
next = blr->next;
- if(blr->fsp->fnum == fsp->fnum) {
- unsigned char locktype = 0;
+ if (blr->fsp->fnum != fsp->fnum) {
+ continue;
+ }
- if (blr->com_type == SMBlockingX) {
- locktype = CVAL(blr->inbuf,smb_vwv3);
- }
+ if (blr->com_type == SMBlockingX) {
+ locktype = CVAL(blr->inbuf,smb_vwv3);
+ }
- if (br_lck) {
- DEBUG(10,("remove_pending_lock_requests_by_fid - removing request type %d for \
-file %s fnum = %d\n", blr->com_type, fsp->fsp_name, fsp->fnum ));
+ if (br_lck) {
+ DEBUG(10, ("remove_pending_lock_requests_by_fid - "
+ "removing request type %d for file %s fnum "
+ "= %d\n", blr->com_type, fsp->fsp_name,
+ fsp->fnum));
- brl_lock_cancel(br_lck,
+ brl_lock_cancel(br_lck,
blr->lock_pid,
procid_self(),
blr->offset,
blr->count,
blr->lock_flav);
- blocking_lock_cancel(fsp,
- blr->lock_pid,
- blr->offset,
- blr->count,
- blr->lock_flav,
- locktype,
- NT_STATUS_RANGE_NOT_LOCKED);
- }
- /* We're closing the file fsp here, so ensure
- * we don't have a dangling pointer. */
- blr->fsp = NULL;
+ blocking_lock_cancel(fsp,
+ blr->lock_pid,
+ blr->offset,
+ blr->count,
+ blr->lock_flav,
+ locktype,
+ NT_STATUS_RANGE_NOT_LOCKED);
}
+ /* We're closing the file fsp here, so ensure
+ * we don't have a dangling pointer. */
+ blr->fsp = NULL;
}
}