[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