[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Mon May 10 12:10:27 MDT 2010


The branch, master has been updated
       via  a9a3c83... Fix more of the SMB2-LOCK tests. Correctly unlock locks on error.
      from  4f25bae... s4:password_hash LDB module - quiet a warning

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a9a3c83b413cf3f853845c9e9b6069ed3d7c1cde
Author: Jeremy Allison <jra at samba.org>
Date:   Mon May 10 11:09:41 2010 -0700

    Fix more of the SMB2-LOCK tests. Correctly unlock locks on error.
    
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/smb2_lock.c |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/smb2_lock.c b/source3/smbd/smb2_lock.c
index ceeba86..f971779 100644
--- a/source3/smbd/smb2_lock.c
+++ b/source3/smbd/smb2_lock.c
@@ -38,7 +38,8 @@ struct smbd_smb2_lock_state {
 	struct smbd_lock_element *locks;
 };
 
-static void remove_pending_lock(TALLOC_CTX *mem_ctx, struct blocking_lock_record *blr);
+static void remove_pending_lock(struct smbd_smb2_lock_state *state,
+				struct blocking_lock_record *blr);
 
 static struct tevent_req *smbd_smb2_lock_send(TALLOC_CTX *mem_ctx,
 						 struct tevent_context *ev,
@@ -681,10 +682,12 @@ bool push_blocking_lock_request_smb2( struct byte_range_lock *br_lck,
  Remove a pending lock record under lock.
 *****************************************************************/
 
-static void remove_pending_lock(TALLOC_CTX *mem_ctx, struct blocking_lock_record *blr)
+static void remove_pending_lock(struct smbd_smb2_lock_state *state,
+			struct blocking_lock_record *blr)
 {
+	int i;
 	struct byte_range_lock *br_lck = brl_get_locks(
-				mem_ctx, blr->fsp);
+				state, blr->fsp);
 
 	DEBUG(10, ("remove_pending_lock: BLR = %p\n", blr));
 
@@ -698,6 +701,19 @@ static void remove_pending_lock(TALLOC_CTX *mem_ctx, struct blocking_lock_record
 				blr);
 		TALLOC_FREE(br_lck);
 	}
+
+	/* Remove the locks we already got. */
+
+	for(i = blr->lock_num - 1; i >= 0; i--) {
+		struct smbd_lock_element *e = &state->locks[i];
+
+		do_unlock(smbd_messaging_context(),
+			blr->fsp,
+			e->smblctx,
+			e->count,
+			e->offset,
+			WINDOWS_LOCK);
+	}
 }
 
 /****************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list