The branch, master has been updated
       via  92282a8... s3: Remove references to smbd_messaging_context() from 
the spoolss server
       via  a5a0711... s3: Remove a reference to smbd_messaging_context()
       via  19a9083... s3: Remove some references to smbd_messaging_context()
       via  77c6314... s3: Remove procid_self() from connections_fetch_entry()
       via  2122917... s3: Add msg_ctx to pipes_struct
       via  c9b654f... s3: Remove smbd_messaging_context() from 
send_stat_cache_delete_message()
      from  4b47245... s4:ntlmssp Merge more aspects of the source3/ NTLMSSP 
layer

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


- Log -----------------------------------------------------------------
commit 92282a815d2d7351b21fd734a345e1500db89068
Author: Volker Lendecke <v...@samba.org>
Date:   Sat Aug 7 12:35:54 2010 +0200

    s3: Remove references to smbd_messaging_context() from the spoolss server

commit a5a0711f0c5e8b3e42301d5b050197a413e86fa7
Author: Volker Lendecke <v...@samba.org>
Date:   Sat Aug 7 12:27:22 2010 +0200

    s3: Remove a reference to smbd_messaging_context()

commit 19a908350eef1ae7725e3412da087be8e7cf05b0
Author: Volker Lendecke <v...@samba.org>
Date:   Sat Aug 7 11:58:48 2010 +0200

    s3: Remove some references to smbd_messaging_context()

commit 77c63149a3c91798445a56b31624036473e7f570
Author: Volker Lendecke <v...@samba.org>
Date:   Thu Jul 8 18:00:07 2010 +0200

    s3: Remove procid_self() from connections_fetch_entry()

commit 21229178bd4703a70f222e102bd2588449ac023b
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Jul 6 22:52:19 2010 +0200

    s3: Add msg_ctx to pipes_struct

commit c9b654f5810f46b20e082895499c0bf2a3077173
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Jul 6 22:43:14 2010 +0200

    s3: Remove smbd_messaging_context() from send_stat_cache_delete_message()

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

Summary of changes:
 source3/include/nt_printing.h              |    4 --
 source3/include/ntdomain.h                 |    1 +
 source3/include/proto.h                    |    3 +-
 source3/lib/conn_tdb.c                     |    3 +-
 source3/lib/dummysmbd.c                    |    3 +-
 source3/locking/locking.c                  |    3 +-
 source3/rpc_server/rpc_ncacn_np_internal.c |    2 +
 source3/rpc_server/srv_netlog_nt.c         |   11 +++---
 source3/rpc_server/srv_spoolss_nt.c        |   47 +++++++++++++++-------------
 source3/rpc_server/srv_srvsvc_nt.c         |   35 ++++++++++++--------
 source3/rpc_server/srv_wkssvc_nt.c         |    4 +-
 source3/smbd/close.c                       |    3 +-
 source3/smbd/statcache.c                   |    5 ++-
 13 files changed, 69 insertions(+), 55 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h
index 199236b..a185aab 100644
--- a/source3/include/nt_printing.h
+++ b/source3/include/nt_printing.h
@@ -236,10 +236,6 @@ WERROR spoolss_map_to_os2_driver(TALLOC_CTX *mem_ctx, 
const char **pdrivername);
 
 const char *get_short_archi(const char *long_archi);
 
-bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
-                     struct spoolss_SetPrinterInfo2 *info2,
-                     const char *remote_machine);
-
 bool print_access_check(struct auth_serversupplied_info *server_info, int snum,
                        int access_type);
 
diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h
index f42ff58..071e915 100644
--- a/source3/include/ntdomain.h
+++ b/source3/include/ntdomain.h
@@ -134,6 +134,7 @@ struct pipes_struct {
        char client_address[INET6_ADDRSTRLEN];
 
        struct auth_serversupplied_info *server_info;
+       struct messaging_context *msg_ctx;
 
        struct ndr_syntax_id syntax;
 
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 7e56f7d..060776f 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5838,7 +5838,8 @@ bool stat_cache_lookup(connection_struct *conn,
                        char **pp_dirpath,
                        char **pp_start,
                        SMB_STRUCT_STAT *pst);
-void send_stat_cache_delete_message(const char *name);
+void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
+                                   const char *name);
 void stat_cache_delete(const char *name);
 unsigned int fast_string_hash(TDB_DATA *key);
 bool reset_stat_cache( void );
diff --git a/source3/lib/conn_tdb.c b/source3/lib/conn_tdb.c
index 7f9c746..b95b4cd 100644
--- a/source3/lib/conn_tdb.c
+++ b/source3/lib/conn_tdb.c
@@ -18,6 +18,7 @@
 */
 
 #include "includes.h"
+#include "smbd/globals.h"
 
 static struct db_context *connections_db_ctx(bool rw)
 {
@@ -55,7 +56,7 @@ struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
        TDB_DATA key;
 
        ZERO_STRUCT(ckey);
-       ckey.pid = procid_self();
+       ckey.pid = sconn_server_id(conn->sconn);
        ckey.cnum = conn->cnum;
        strlcpy(ckey.name, name, sizeof(ckey.name));
 
diff --git a/source3/lib/dummysmbd.c b/source3/lib/dummysmbd.c
index 01a5563..c79e080 100644
--- a/source3/lib/dummysmbd.c
+++ b/source3/lib/dummysmbd.c
@@ -44,7 +44,8 @@ void cancel_pending_lock_requests_by_fid(files_struct *fsp,
 {
 }
 
-void send_stat_cache_delete_message(const char *name)
+void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
+                                   const char *name)
 {
 }
 
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index a9b13d6..24998ab 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -1457,7 +1457,8 @@ bool set_delete_on_close(files_struct *fsp, bool 
delete_on_close, const UNIX_USE
 
        if (fsp->is_directory) {
                SMB_ASSERT(!is_ntfs_stream_smb_fname(fsp->fsp_name));
-               send_stat_cache_delete_message(fsp->fsp_name->base_name);
+               send_stat_cache_delete_message(fsp->conn->sconn->msg_ctx,
+                                              fsp->fsp_name->base_name);
        }
 
        TALLOC_FREE(lck);
diff --git a/source3/rpc_server/rpc_ncacn_np_internal.c 
b/source3/rpc_server/rpc_ncacn_np_internal.c
index 9bb5428..b2b337a 100644
--- a/source3/rpc_server/rpc_ncacn_np_internal.c
+++ b/source3/rpc_server/rpc_ncacn_np_internal.c
@@ -152,6 +152,8 @@ struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX 
*mem_ctx,
                return NULL;
        }
 
+       p->msg_ctx = smbd_messaging_context();
+
        DLIST_ADD(InternalPipes, p);
 
        strlcpy(p->client_address, client_address, sizeof(p->client_address));
diff --git a/source3/rpc_server/srv_netlog_nt.c 
b/source3/rpc_server/srv_netlog_nt.c
index 56b5027..300d2d4 100644
--- a/source3/rpc_server/srv_netlog_nt.c
+++ b/source3/rpc_server/srv_netlog_nt.c
@@ -76,11 +76,10 @@ WERROR _netr_LogonControl(struct pipes_struct *p,
 Send a message to smbd to do a sam synchronisation
 **************************************************************************/
 
-static void send_sync_message(void)
+static void send_sync_message(struct messaging_context *msg_ctx)
 {
         DEBUG(3, ("sending sam synchronisation message\n"));
-        message_send_all(smbd_messaging_context(), MSG_SMB_SAM_SYNC, NULL, 0,
-                        NULL);
+        message_send_all(msg_ctx, MSG_SMB_SAM_SYNC, NULL, 0, NULL);
 }
 
 /*************************************************************************
@@ -379,7 +378,7 @@ WERROR _netr_LogonControl2Ex(struct pipes_struct *p,
        }
 
         if (lp_server_role() == ROLE_DOMAIN_BDC) {
-                send_sync_message();
+                send_sync_message(p->msg_ctx);
        }
 
        return WERR_OK;
@@ -1694,7 +1693,7 @@ WERROR _netr_GetDcName(struct pipes_struct *p,
        flags = DS_PDC_REQUIRED | DS_IS_FLAT_NAME | DS_RETURN_FLAT_NAME;
 
        status = dsgetdcname(p->mem_ctx,
-                            smbd_messaging_context(),
+                            p->msg_ctx,
                             r->in.domainname,
                             NULL,
                             NULL,
@@ -1739,7 +1738,7 @@ WERROR _netr_GetAnyDCName(struct pipes_struct *p,
        flags = DS_IS_FLAT_NAME | DS_RETURN_FLAT_NAME;
 
        status = dsgetdcname(p->mem_ctx,
-                            smbd_messaging_context(),
+                            p->msg_ctx,
                             r->in.domainname,
                             NULL,
                             NULL,
diff --git a/source3/rpc_server/srv_spoolss_nt.c 
b/source3/rpc_server/srv_spoolss_nt.c
index d33801e..89b9e7a 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -279,7 +279,9 @@ static bool close_printer_handle(struct pipes_struct *p, 
struct policy_handle *h
  Delete a printer given a handle.
 ****************************************************************************/
 
-static WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, const 
char *sharename)
+static WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
+                                 const char *sharename,
+                                 struct messaging_context *msg_ctx)
 {
        char *cmd = lp_deleteprinter_cmd();
        char *command = NULL;
@@ -310,8 +312,7 @@ static WERROR delete_printer_hook(TALLOC_CTX *ctx, 
NT_USER_TOKEN *token, const c
 
        if ( (ret = smbrun(command, NULL)) == 0 ) {
                /* Tell everyone we updated smb.conf. */
-               message_send_all(smbd_messaging_context(),
-                                MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+               message_send_all(msg_ctx, MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
        }
 
        if ( is_print_op )
@@ -375,7 +376,7 @@ static WERROR delete_printer_handle(struct pipes_struct *p, 
struct policy_handle
        }
 
        return delete_printer_hook(p->mem_ctx, p->server_info->ptok,
-                                  Printer->sharename );
+                                  Printer->sharename, p->msg_ctx);
 }
 
 /****************************************************************************
@@ -1266,7 +1267,8 @@ static void receive_notify2_message_list(struct 
messaging_context *msg,
  driver
  ********************************************************************/
 
-static bool srv_spoolss_drv_upgrade_printer(const char *drivername)
+static bool srv_spoolss_drv_upgrade_printer(const char *drivername,
+                                           struct messaging_context *msg_ctx)
 {
        int len = strlen(drivername);
 
@@ -1276,8 +1278,7 @@ static bool srv_spoolss_drv_upgrade_printer(const char 
*drivername)
        DEBUG(10,("srv_spoolss_drv_upgrade_printer: Sending message about 
driver upgrade [%s]\n",
                drivername));
 
-       messaging_send_buf(smbd_messaging_context(),
-                          messaging_server_id(smbd_messaging_context()),
+       messaging_send_buf(msg_ctx, messaging_server_id(msg_ctx),
                           MSG_PRINTER_DRVUPGRADE,
                           (uint8_t *)drivername, len+1);
 
@@ -2273,7 +2274,8 @@ static bool spoolss_connect_to_client(struct 
rpc_pipe_client **pp_pipe,
 static bool srv_spoolss_replyopenprinter(int snum, const char *printer,
                                        uint32_t localprinter, uint32_t type,
                                        struct policy_handle *handle,
-                                       struct sockaddr_storage *client_ss)
+                                       struct sockaddr_storage *client_ss,
+                                       struct messaging_context *msg_ctx)
 {
        WERROR result;
        NTSTATUS status;
@@ -2290,14 +2292,12 @@ static bool srv_spoolss_replyopenprinter(int snum, 
const char *printer,
                if ( !spoolss_connect_to_client( &notify_cli_pipe, client_ss, 
unix_printer ))
                        return false;
 
-               messaging_register(smbd_messaging_context(), NULL,
-                                  MSG_PRINTER_NOTIFY2,
+               messaging_register(msg_ctx, NULL, MSG_PRINTER_NOTIFY2,
                                   receive_notify2_message_list);
                /* Tell the connections db we're now interested in printer
                 * notify messages. */
-               serverid_register_msg_flags(
-                       messaging_server_id(smbd_messaging_context()),
-                       true, FLAG_MSG_PRINT_NOTIFY);
+               serverid_register_msg_flags(messaging_server_id(msg_ctx),
+                                           true, FLAG_MSG_PRINT_NOTIFY);
        }
 
        /*
@@ -2431,7 +2431,8 @@ WERROR 
_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct pipes_struct *p,
 
        if(!srv_spoolss_replyopenprinter(snum, Printer->notify.localmachine,
                                        Printer->notify.printerlocal, 1,
-                                       &Printer->notify.client_hnd, 
&client_ss))
+                                       &Printer->notify.client_hnd,
+                                       &client_ss, p->msg_ctx))
                return WERR_SERVER_UNAVAILABLE;
 
        Printer->notify.client_connected = true;
@@ -5547,9 +5548,10 @@ static WERROR add_port_hook(TALLOC_CTX *ctx, 
NT_USER_TOKEN *token, const char *p
 /****************************************************************************
 ****************************************************************************/
 
-bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
-                     struct spoolss_SetPrinterInfo2 *info2,
-                     const char *remote_machine)
+static bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
+                            struct spoolss_SetPrinterInfo2 *info2,
+                            const char *remote_machine,
+                            struct messaging_context *msg_ctx)
 {
        char *cmd = lp_addprinter_cmd();
        char **qlines;
@@ -5585,8 +5587,7 @@ bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN 
*token,
 
        if ( (ret = smbrun(command, &fd)) == 0 ) {
                /* Tell everyone we updated smb.conf. */
-               message_send_all(smbd_messaging_context(),
-                                MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+               message_send_all(msg_ctx, MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
        }
 
        if ( is_print_op )
@@ -5966,7 +5967,8 @@ static WERROR update_printer(struct pipes_struct *p,
        {
                /* add_printer_hook() will call reload_services() */
                if (!add_printer_hook(tmp_ctx, p->server_info->ptok,
-                                     printer, p->client_address) ) {
+                                     printer, p->client_address,
+                                     p->msg_ctx)) {
                        result = WERR_ACCESS_DENIED;
                        goto done;
                }
@@ -7256,7 +7258,8 @@ static WERROR spoolss_addprinterex_level_2(struct 
pipes_struct *p,
 
        if (*lp_addprinter_cmd() ) {
                if ( !add_printer_hook(p->mem_ctx, p->server_info->ptok,
-                                      info2, p->client_address) ) {
+                                      info2, p->client_address,
+                                      p->msg_ctx) ) {
                        return WERR_ACCESS_DENIED;
                }
        } else {
@@ -7431,7 +7434,7 @@ WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p,
         * to update each printer bound to this driver.   --jerry
         */
 
-       if (!srv_spoolss_drv_upgrade_printer(driver_name)) {
+       if (!srv_spoolss_drv_upgrade_printer(driver_name, p->msg_ctx)) {
                DEBUG(0,("%s: Failed to send message about upgrading driver 
[%s]!\n",
                        fn, driver_name));
        }
diff --git a/source3/rpc_server/srv_srvsvc_nt.c 
b/source3/rpc_server/srv_srvsvc_nt.c
index 35c030a..af15e7e 100644
--- a/source3/rpc_server/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srv_srvsvc_nt.c
@@ -1327,7 +1327,7 @@ WERROR _srvsvc_NetSessDel(struct pipes_struct *p,
                                become_root();
                        }
 
-                       ntstat = messaging_send(smbd_messaging_context(),
+                       ntstat = messaging_send(p->msg_ctx,
                                                session_list[snum].pid,
                                                MSG_SHUTDOWN, &data_blob_null);
 
@@ -1705,9 +1705,8 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
 
                if ( (ret = smbrun(command, NULL)) == 0 ) {
                        /* Tell everyone we updated smb.conf. */
-                       message_send_all(smbd_messaging_context(),
-                                        MSG_SMB_CONF_UPDATED, NULL, 0,
-                                        NULL);
+                       message_send_all(p->msg_ctx, MSG_SMB_CONF_UPDATED,
+                                        NULL, 0, NULL);
                }
 
                if ( is_disk_op )
@@ -1893,8 +1892,8 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p,
 
        if ( (ret = smbrun(command, NULL)) == 0 ) {
                /* Tell everyone we updated smb.conf. */
-               message_send_all(smbd_messaging_context(),
-                                MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+               message_send_all(p->msg_ctx, MSG_SMB_CONF_UPDATED, NULL, 0,
+                                NULL);
        }
 
        if ( is_disk_op )
@@ -1997,8 +1996,8 @@ WERROR _srvsvc_NetShareDel(struct pipes_struct *p,
 
        if ( (ret = smbrun(command, NULL)) == 0 ) {
                /* Tell everyone we updated smb.conf. */
-               message_send_all(smbd_messaging_context(),
-                                MSG_SMB_CONF_UPDATED, NULL, 0, NULL);
+               message_send_all(p->msg_ctx, MSG_SMB_CONF_UPDATED, NULL, 0,
+                                NULL);
        }
 
        if ( is_disk_op )
@@ -2473,16 +2472,21 @@ WERROR _srvsvc_NetNameValidate(struct pipes_struct *p,
 /*******************************************************************
 ********************************************************************/
 
+struct enum_file_close_state {
+       struct srvsvc_NetFileClose *r;
+       struct messaging_context *msg_ctx;
+};
+
 static void enum_file_close_fn( const struct share_mode_entry *e,
                           const char *sharepath, const char *fname,
                          void *private_data )
 {
        char msg[MSG_SMB_SHARE_MODE_ENTRY_SIZE];
-       struct srvsvc_NetFileClose *r =
-               (struct srvsvc_NetFileClose *)private_data;
+       struct enum_file_close_state *state =
+               (struct enum_file_close_state *)private_data;
        uint32_t fid = (((uint32_t)(procid_to_pid(&e->pid))<<16) | 
e->share_file_id);
 
-       if (fid != r->in.fid) {
+       if (fid != state->r->in.fid) {
                return; /* Not this file. */
        }
 
@@ -2497,8 +2501,8 @@ static void enum_file_close_fn( const struct 
share_mode_entry *e,
 
        share_mode_entry_to_message(msg, e);
 
-       r->out.result = ntstatus_to_werror(
-                       messaging_send_buf(smbd_messaging_context(),
+       state->r->out.result = ntstatus_to_werror(
+               messaging_send_buf(state->msg_ctx,
                                e->pid, MSG_SMB_CLOSE_FILE,
                                (uint8 *)msg,
                                MSG_SMB_SHARE_MODE_ENTRY_SIZE));
@@ -2511,6 +2515,7 @@ static void enum_file_close_fn( const struct 
share_mode_entry *e,
 WERROR _srvsvc_NetFileClose(struct pipes_struct *p,
                            struct srvsvc_NetFileClose *r)
 {
+       struct enum_file_close_state state;
        SE_PRIV se_diskop = SE_DISK_OPERATOR;
        bool is_disk_op;
 
@@ -2526,7 +2531,9 @@ WERROR _srvsvc_NetFileClose(struct pipes_struct *p,
         * the relevent smbd process. */
 
        r->out.result = WERR_BADFILE;
-       share_mode_forall( enum_file_close_fn, (void *)r);
+       state.r = r;
+       state.msg_ctx = p->msg_ctx;
+       share_mode_forall(enum_file_close_fn, &state);
        return r->out.result;
 }
 
diff --git a/source3/rpc_server/srv_wkssvc_nt.c 
b/source3/rpc_server/srv_wkssvc_nt.c
index 200a02b..a90ac69 100644
--- a/source3/rpc_server/srv_wkssvc_nt.c
+++ b/source3/rpc_server/srv_wkssvc_nt.c
@@ -859,7 +859,7 @@ WERROR _wkssvc_NetrJoinDomain2(struct pipes_struct *p,
        j->in.admin_password    = cleartext_pwd;
        j->in.debug             = true;
        j->in.modify_config     = lp_config_backend_is_registry();
-       j->in.msg_ctx           = smbd_messaging_context();
+       j->in.msg_ctx           = p->msg_ctx;
 
        become_root();
        werr = libnet_Join(p->mem_ctx, j);
@@ -925,7 +925,7 @@ WERROR _wkssvc_NetrUnjoinDomain2(struct pipes_struct *p,
        u->in.admin_password    = cleartext_pwd;
        u->in.debug             = true;
        u->in.modify_config     = lp_config_backend_is_registry();
-       u->in.msg_ctx           = smbd_messaging_context();
+       u->in.msg_ctx           = p->msg_ctx;
 
        become_root();
        werr = libnet_Unjoin(p->mem_ctx, u);
diff --git a/source3/smbd/close.c b/source3/smbd/close.c
index fb0e206..fad9601 100644
--- a/source3/smbd/close.c
+++ b/source3/smbd/close.c
@@ -961,7 +961,8 @@ static NTSTATUS close_directory(struct smb_request *req, 
files_struct *fsp,
                        become_user(fsp->conn, fsp->vuid);
                        became_user = True;
                }
-               send_stat_cache_delete_message(fsp->fsp_name->base_name);
+               send_stat_cache_delete_message(fsp->conn->sconn->msg_ctx,
+                                              fsp->fsp_name->base_name);
                set_delete_on_close_lck(lck, True, get_current_utok(fsp->conn));
                fsp->delete_on_close = true;
                if (became_user) {
diff --git a/source3/smbd/statcache.c b/source3/smbd/statcache.c
index 88cb97e..cea27d4 100644
--- a/source3/smbd/statcache.c
+++ b/source3/smbd/statcache.c
@@ -336,10 +336,11 @@ bool stat_cache_lookup(connection_struct *conn,
  Tell all smbd's to delete an entry.
 **************************************************************************/
 
-void send_stat_cache_delete_message(const char *name)
+void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
+                                   const char *name)
 {
 #ifdef DEVELOPER
-       message_send_all(smbd_messaging_context(),
+       message_send_all(msg_ctx,
                        MSG_SMB_STAT_CACHE_DELETE,
                        name,
                        strlen(name)+1,


-- 
Samba Shared Repository

Reply via email to