[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Sun Oct 3 10:16:25 MDT 2010


The branch, master has been updated
       via  79a4be4 s3: Remove smbd_server_conn from msg_force_tdis
       via  e128b23 s3: Remove smbd_server_conn from process_blocking_lock_cancel_message
       via  c0eb35c s3: Remove smbd_server_conn from smb1 receive_unlock_msg
       via  db60733 s3: Remove smbd_server_conn from msg_file_was_renamed
       via  3cf3d54 s3: Remove smbd_server_conn from validate_my_share_entries
       via  924357a s3: Remove smbd_server_conn from msg_close_file
       via  898f7c9 s3: Remove smbd_server_conn from smb2 receive_unlock_msg
       via  554f5e7 s3: Remove smbd_server_conn from process_kernel_oplock_break
       via  5d1d575 s3: Remove smbd_server_conn from process_oplock_break_message
       via  35d6d44 s3: Remove smbd_server_conn from process_oplock_async_level2_break_message
       via  1d3aa74 s3: Lift smbd_server_conn from initial_break_processing
       via  fb2f0c5 s3: Add msg_ctx_to_sconn
      from  fba8e32 s4:patchfile_dotreg.c - use "size_t" when counting characters in DATA_BLOBs

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


- Log -----------------------------------------------------------------
commit 79a4be4f773ef7ce7340619102374796de150a8a
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:39:00 2010 +0200

    s3: Remove smbd_server_conn from msg_force_tdis

commit e128b2316550f654279345c1f38087b125d9b19b
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:37:24 2010 +0200

    s3: Remove smbd_server_conn from process_blocking_lock_cancel_message

commit c0eb35c0a245f6f9e8ca430b3ad4d3435d365761
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:35:52 2010 +0200

    s3: Remove smbd_server_conn from smb1 receive_unlock_msg

commit db607331d353dc43e1a7cb11e7af0ce7e38faf9a
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:34:43 2010 +0200

    s3: Remove smbd_server_conn from msg_file_was_renamed

commit 3cf3d54fbc3c28e40d3e23543c0fef1c9e81559a
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:33:11 2010 +0200

    s3: Remove smbd_server_conn from validate_my_share_entries

commit 924357ab524bdb296b86ee4e34b9a9669d1d5901
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:29:56 2010 +0200

    s3: Remove smbd_server_conn from msg_close_file

commit 898f7c9603b1a9057f0a65b368c569d52b627238
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:28:10 2010 +0200

    s3: Remove smbd_server_conn from smb2 receive_unlock_msg

commit 554f5e7c6035577ab6463f12cc0e5b4a089cbc86
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:24:33 2010 +0200

    s3: Remove smbd_server_conn from process_kernel_oplock_break

commit 5d1d575e87dfd8a378f385ce1d99c66956cbb17b
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:22:09 2010 +0200

    s3: Remove smbd_server_conn from process_oplock_break_message

commit 35d6d44e5ae6e82c8c1eb05d4bff65b5399f1197
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:20:43 2010 +0200

    s3: Remove smbd_server_conn from process_oplock_async_level2_break_message

commit 1d3aa74e4ce5b7d8fd6a916b2f36b46c6897fd27
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Oct 3 17:18:26 2010 +0200

    s3: Lift smbd_server_conn from initial_break_processing

commit fb2f0c5bdd5bd4cb62072cf2e2b9bc7d73ad6b42
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Sep 19 21:09:18 2010 +0200

    s3: Add msg_ctx_to_sconn

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

Summary of changes:
 source3/smbd/blocking.c  |   18 ++++++++++++++++--
 source3/smbd/close.c     |    9 ++++++++-
 source3/smbd/conn.c      |    8 +++++++-
 source3/smbd/globals.c   |   13 +++++++++++++
 source3/smbd/globals.h   |    2 ++
 source3/smbd/open.c      |   17 +++++++++++++----
 source3/smbd/oplock.c    |   35 ++++++++++++++++++++++++++++-------
 source3/smbd/smb2_lock.c |   10 +++++++++-
 8 files changed, 96 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index 7a73ea9..dd99666 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -702,8 +702,16 @@ static void received_unlock_msg(struct messaging_context *msg,
 				struct server_id server_id,
 				DATA_BLOB *data)
 {
+	struct smbd_server_connection *sconn;
+
+	sconn = msg_ctx_to_sconn(msg);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	DEBUG(10,("received_unlock_msg\n"));
-	process_blocking_lock_queue(smbd_server_conn);
+	process_blocking_lock_queue(sconn);
 }
 
 /****************************************************************************
@@ -820,7 +828,7 @@ static void process_blocking_lock_cancel_message(struct messaging_context *ctx,
 						 struct server_id server_id,
 						 DATA_BLOB *data)
 {
-	struct smbd_server_connection *sconn = smbd_server_conn;
+	struct smbd_server_connection *sconn;
 	NTSTATUS err;
 	const char *msg = (const char *)data->data;
 	struct blocking_lock_record *blr;
@@ -835,6 +843,12 @@ static void process_blocking_lock_cancel_message(struct messaging_context *ctx,
 		smb_panic("process_blocking_lock_cancel_message: bad msg");
         }
 
+	sconn = msg_ctx_to_sconn(ctx);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	memcpy(&blr, msg, sizeof(blr));
 	memcpy(&err, &msg[sizeof(blr)], sizeof(NTSTATUS));
 
diff --git a/source3/smbd/close.c b/source3/smbd/close.c
index 13ebe33..00bcef0 100644
--- a/source3/smbd/close.c
+++ b/source3/smbd/close.c
@@ -1103,9 +1103,16 @@ void msg_close_file(struct messaging_context *msg_ctx,
 			struct server_id server_id,
 			DATA_BLOB *data)
 {
+	struct smbd_server_connection *sconn;
 	files_struct *fsp = NULL;
 	struct share_mode_entry e;
 
+	sconn = msg_ctx_to_sconn(msg_ctx);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	message_to_share_mode_entry(&e, (char *)data->data);
 
 	if(DEBUGLVL(10)) {
@@ -1118,7 +1125,7 @@ void msg_close_file(struct messaging_context *msg_ctx,
 		TALLOC_FREE(sm_str);
 	}
 
-	fsp = file_find_dif(smbd_server_conn, e.id, e.share_file_id);
+	fsp = file_find_dif(sconn, e.id, e.share_file_id);
 	if (!fsp) {
 		DEBUG(10,("msg_close_file: failed to find file.\n"));
 		return;
diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c
index fffb5bf..d12495b 100644
--- a/source3/smbd/conn.c
+++ b/source3/smbd/conn.c
@@ -347,10 +347,16 @@ void msg_force_tdis(struct messaging_context *msg,
 		    struct server_id server_id,
 		    DATA_BLOB *data)
 {
-	struct smbd_server_connection *sconn = smbd_server_conn;
+	struct smbd_server_connection *sconn;
 	connection_struct *conn, *next;
 	fstring sharename;
 
+	sconn = msg_ctx_to_sconn(msg);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	fstrcpy(sharename, (const char *)data->data);
 
 	if (strcmp(sharename, "*") == 0) {
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c
index 2f6e33b..4642328 100644
--- a/source3/smbd/globals.c
+++ b/source3/smbd/globals.c
@@ -102,6 +102,19 @@ int num_children = 0;
 
 struct smbd_server_connection *smbd_server_conn = NULL;
 
+struct smbd_server_connection *msg_ctx_to_sconn(struct messaging_context *msg_ctx)
+{
+	struct server_id my_id, msg_id;
+
+	my_id = messaging_server_id(smbd_server_conn->msg_ctx);
+	msg_id = messaging_server_id(msg_ctx);
+
+	if (!procid_equal(&my_id, &msg_id)) {
+		return NULL;
+	}
+	return smbd_server_conn;
+}
+
 struct messaging_context *smbd_messaging_context(void)
 {
 	return server_messaging_context();
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index 81e7f84..cbbb583 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -585,4 +585,6 @@ struct smbd_server_connection {
 
 extern struct smbd_server_connection *smbd_server_conn;
 
+struct smbd_server_connection *msg_ctx_to_sconn(struct messaging_context *msg_ctx);
+
 void smbd_init_globals(void);
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 00bee5b..d395331 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -743,7 +743,8 @@ sa = 0x%x, share = 0x%x\n", (num), (unsigned int)(am), (unsigned int)(right), (u
 }
 
 #if defined(DEVELOPER)
-static void validate_my_share_entries(int num,
+static void validate_my_share_entries(struct smbd_server_connection *sconn,
+				      int num,
 				      struct share_mode_entry *share_entry)
 {
 	files_struct *fsp;
@@ -765,7 +766,7 @@ static void validate_my_share_entries(int num,
 		return;
 	}
 
-	fsp = file_find_dif(smbd_server_conn, share_entry->id,
+	fsp = file_find_dif(sconn, share_entry->id,
 			    share_entry->share_file_id);
 	if (!fsp) {
 		DEBUG(0,("validate_my_share_entries: PANIC : %s\n",
@@ -856,7 +857,8 @@ static NTSTATUS open_mode_check(connection_struct *conn,
 	
 #if defined(DEVELOPER)
 	for(i = 0; i < lck->num_share_modes; i++) {
-		validate_my_share_entries(i, &lck->share_modes[i]);
+		validate_my_share_entries(conn->sconn, i,
+					  &lck->share_modes[i]);
 	}
 #endif
 
@@ -2732,6 +2734,7 @@ void msg_file_was_renamed(struct messaging_context *msg,
 			  struct server_id server_id,
 			  DATA_BLOB *data)
 {
+	struct smbd_server_connection *sconn;
 	files_struct *fsp;
 	char *frm = (char *)data->data;
 	struct file_id id;
@@ -2742,6 +2745,12 @@ void msg_file_was_renamed(struct messaging_context *msg,
 	size_t sp_len, bn_len;
 	NTSTATUS status;
 
+	sconn = msg_ctx_to_sconn(msg);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	if (data->data == NULL
 	    || data->length < MSG_FILE_RENAMED_MIN_SIZE + 2) {
                 DEBUG(0, ("msg_file_was_renamed: Got invalid msg len %d\n",
@@ -2773,7 +2782,7 @@ void msg_file_was_renamed(struct messaging_context *msg,
 		sharepath, smb_fname_str_dbg(smb_fname),
 		file_id_string_tos(&id)));
 
-	for(fsp = file_find_di_first(smbd_server_conn, id); fsp;
+	for(fsp = file_find_di_first(sconn, id); fsp;
 	    fsp = file_find_di_next(fsp)) {
 		if (memcmp(fsp->conn->connectpath, sharepath, sp_len) == 0) {
 
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index 5521a95..c632e8a 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -256,7 +256,9 @@ static void wait_before_sending_break(void)
  Ensure that we have a valid oplock.
 ****************************************************************************/
 
-static files_struct *initial_break_processing(struct file_id id, unsigned long file_id)
+static files_struct *initial_break_processing(
+	struct smbd_server_connection *sconn, struct file_id id,
+	unsigned long file_id)
 {
 	files_struct *fsp = NULL;
 
@@ -273,7 +275,7 @@ static files_struct *initial_break_processing(struct file_id id, unsigned long f
 	 * we have an oplock on it.
 	 */
 
-	fsp = file_find_dif(smbd_server_conn, id, file_id);
+	fsp = file_find_dif(sconn, id, file_id);
 
 	if(fsp == NULL) {
 		/* The file could have been closed in the meantime - return success. */
@@ -427,6 +429,7 @@ void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx
 						      struct server_id src,
 						      DATA_BLOB *data)
 {
+	struct smbd_server_connection *sconn;
 	struct share_mode_entry msg;
 	files_struct *fsp;
 
@@ -435,6 +438,12 @@ void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx
 		return;
 	}
 
+	sconn = msg_ctx_to_sconn(msg_ctx);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	if (data->length != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
 		DEBUG(0, ("Got invalid msg len %d\n", (int)data->length));
 		return;
@@ -447,7 +456,7 @@ void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx
 		   "%s/%lu\n", procid_str(talloc_tos(), &src),
 		   file_id_string_tos(&msg.id), msg.share_file_id));
 
-	fsp = initial_break_processing(msg.id, msg.share_file_id);
+	fsp = initial_break_processing(sconn, msg.id, msg.share_file_id);
 
 	if (fsp == NULL) {
 		/* We hit a race here. Break messages are sent, and before we
@@ -470,7 +479,7 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
 					 struct server_id src,
 					 DATA_BLOB *data)
 {
-	struct smbd_server_connection *sconn = smbd_server_conn;
+	struct smbd_server_connection *sconn;
 	struct share_mode_entry msg;
 	files_struct *fsp;
 	bool break_to_level2 = False;
@@ -480,6 +489,12 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
 		return;
 	}
 
+	sconn = msg_ctx_to_sconn(msg_ctx);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	if (data->length != MSG_SMB_SHARE_MODE_ENTRY_SIZE) {
 		DEBUG(0, ("Got invalid msg len %d\n", (int)data->length));
 		return;
@@ -492,7 +507,7 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
 		   procid_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
 		   msg.share_file_id));
 
-	fsp = initial_break_processing(msg.id, msg.share_file_id);
+	fsp = initial_break_processing(sconn, msg.id, msg.share_file_id);
 
 	if (fsp == NULL) {
 		/* We hit a race here. Break messages are sent, and before we
@@ -570,7 +585,7 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
 					struct server_id src,
 					DATA_BLOB *data)
 {
-	struct smbd_server_connection *sconn = smbd_server_conn;
+	struct smbd_server_connection *sconn;
 	struct file_id id;
 	unsigned long file_id;
 	files_struct *fsp;
@@ -585,6 +600,12 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
 		return;
 	}
 
+	sconn = msg_ctx_to_sconn(msg_ctx);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+
 	/* Pull the data from the message. */
 	pull_file_id_24((char *)data->data, &id);
 	file_id = (unsigned long)IVAL(data->data, 24);
@@ -593,7 +614,7 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
 		   procid_str(talloc_tos(), &src), file_id_string_tos(&id),
 		   (unsigned int)file_id));
 
-	fsp = initial_break_processing(id, file_id);
+	fsp = initial_break_processing(sconn, id, file_id);
 
 	if (fsp == NULL) {
 		DEBUG(3, ("Got a kernel oplock break message for a file "
diff --git a/source3/smbd/smb2_lock.c b/source3/smbd/smb2_lock.c
index 8e4b6a4..80ce2bc 100644
--- a/source3/smbd/smb2_lock.c
+++ b/source3/smbd/smb2_lock.c
@@ -454,8 +454,16 @@ static void received_unlock_msg(struct messaging_context *msg,
 				struct server_id server_id,
 				DATA_BLOB *data)
 {
+	struct smbd_server_connection *sconn;
+
 	DEBUG(10,("received_unlock_msg (SMB2)\n"));
-	process_blocking_lock_queue_smb2(smbd_server_conn, timeval_current());
+
+	sconn = msg_ctx_to_sconn(msg);
+	if (sconn == NULL) {
+		DEBUG(1, ("could not find sconn\n"));
+		return;
+	}
+	process_blocking_lock_queue_smb2(sconn, timeval_current());
 }
 
 /****************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list