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 <[email protected]>
Date:   Sun Oct 3 17:39:00 2010 +0200

    s3: Remove smbd_server_conn from msg_force_tdis

commit e128b2316550f654279345c1f38087b125d9b19b
Author: Volker Lendecke <[email protected]>
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 <[email protected]>
Date:   Sun Oct 3 17:35:52 2010 +0200

    s3: Remove smbd_server_conn from smb1 receive_unlock_msg

commit db607331d353dc43e1a7cb11e7af0ce7e38faf9a
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 17:34:43 2010 +0200

    s3: Remove smbd_server_conn from msg_file_was_renamed

commit 3cf3d54fbc3c28e40d3e23543c0fef1c9e81559a
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 17:33:11 2010 +0200

    s3: Remove smbd_server_conn from validate_my_share_entries

commit 924357ab524bdb296b86ee4e34b9a9669d1d5901
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 17:29:56 2010 +0200

    s3: Remove smbd_server_conn from msg_close_file

commit 898f7c9603b1a9057f0a65b368c569d52b627238
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 17:28:10 2010 +0200

    s3: Remove smbd_server_conn from smb2 receive_unlock_msg

commit 554f5e7c6035577ab6463f12cc0e5b4a089cbc86
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 17:24:33 2010 +0200

    s3: Remove smbd_server_conn from process_kernel_oplock_break

commit 5d1d575e87dfd8a378f385ce1d99c66956cbb17b
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 17:22:09 2010 +0200

    s3: Remove smbd_server_conn from process_oplock_break_message

commit 35d6d44e5ae6e82c8c1eb05d4bff65b5399f1197
Author: Volker Lendecke <[email protected]>
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 <[email protected]>
Date:   Sun Oct 3 17:18:26 2010 +0200

    s3: Lift smbd_server_conn from initial_break_processing

commit fb2f0c5bdd5bd4cb62072cf2e2b9bc7d73ad6b42
Author: Volker Lendecke <[email protected]>
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

Reply via email to