diff options
-rw-r--r-- | source3/nsswitch/winbindd.c | 11 | ||||
-rw-r--r-- | source3/nsswitch/winbindd_cm.c | 36 | ||||
-rw-r--r-- | source3/nsswitch/winbindd_dual.c | 35 | ||||
-rw-r--r-- | source3/printing/printing.c | 5 | ||||
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 10 | ||||
-rw-r--r-- | source3/rpc_server/srv_srvsvc_nt.c | 7 |
6 files changed, 68 insertions, 36 deletions
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c index 57591fb6c2..ae1078fe02 100644 --- a/source3/nsswitch/winbindd.c +++ b/source3/nsswitch/winbindd.c @@ -44,6 +44,17 @@ struct event_context *winbind_event_context(void) return ctx; } +struct messaging_context *winbind_messaging_context(void) +{ + static struct messaging_context *ctx; + + if (!ctx && !(ctx = messaging_init(NULL, server_id_self(), + winbind_event_context()))) { + smb_panic("Could not init winbind messaging context\n"); + } + return ctx; +} + /* Reload configuration */ static BOOL reload_services_file(void) diff --git a/source3/nsswitch/winbindd_cm.c b/source3/nsswitch/winbindd_cm.c index a0d12ee62c..58e0ff9d0a 100644 --- a/source3/nsswitch/winbindd_cm.c +++ b/source3/nsswitch/winbindd_cm.c @@ -219,18 +219,22 @@ static BOOL fork_child_dc_connect(struct winbindd_domain *domain) if ((!get_dcs(mem_ctx, domain, &dcs, &num_dcs)) || (num_dcs == 0)) { /* Still offline ? Can't find DC's. */ - message_send_pid(pid_to_procid(parent_pid), MSG_WINBIND_FAILED_TO_GO_ONLINE, - domain->name, - strlen(domain->name)+1, False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(parent_pid), + MSG_WINBIND_FAILED_TO_GO_ONLINE, + (uint8 *)domain->name, + strlen(domain->name)+1); _exit(0); } /* We got a DC. Send a message to our parent to get it to try and do the same. */ - message_send_pid(pid_to_procid(parent_pid), MSG_WINBIND_TRY_TO_GO_ONLINE, - domain->name, - strlen(domain->name)+1, False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(parent_pid), + MSG_WINBIND_TRY_TO_GO_ONLINE, + (uint8 *)domain->name, + strlen(domain->name)+1); _exit(0); } @@ -358,11 +362,11 @@ void set_domain_offline(struct winbindd_domain *domain) struct winbindd_child *idmap = idmap_child(); if ( idmap->pid != 0 ) { - message_send_pid(pid_to_procid(idmap->pid), - MSG_WINBIND_OFFLINE, - domain->name, - strlen(domain->name)+1, - False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(idmap->pid), + MSG_WINBIND_OFFLINE, + (uint8 *)domain->name, + strlen(domain->name)+1); } } @@ -435,11 +439,11 @@ static void set_domain_online(struct winbindd_domain *domain) struct winbindd_child *idmap = idmap_child(); if ( idmap->pid != 0 ) { - message_send_pid(pid_to_procid(idmap->pid), - MSG_WINBIND_ONLINE, - domain->name, - strlen(domain->name)+1, - False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(idmap->pid), + MSG_WINBIND_ONLINE, + (uint8 *)domain->name, + strlen(domain->name)+1); } } diff --git a/source3/nsswitch/winbindd_dual.c b/source3/nsswitch/winbindd_dual.c index fb335b56a5..ec6a32c445 100644 --- a/source3/nsswitch/winbindd_dual.c +++ b/source3/nsswitch/winbindd_dual.c @@ -524,8 +524,11 @@ void winbind_msg_offline(int msg_type, struct server_id src, DEBUG(10,("winbind_msg_offline: sending message to pid %u for domain %s.\n", (unsigned int)child->pid, domain->name )); - message_send_pid(pid_to_procid(child->pid), MSG_WINBIND_OFFLINE, child->domain->name, - strlen(child->domain->name)+1, False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(child->pid), + MSG_WINBIND_OFFLINE, + (uint8 *)child->domain->name, + strlen(child->domain->name)+1); } } @@ -567,11 +570,11 @@ void winbind_msg_online(int msg_type, struct server_id src, struct winbindd_child *idmap = idmap_child(); if ( idmap->pid != 0 ) { - message_send_pid(pid_to_procid(idmap->pid), - MSG_WINBIND_ONLINE, - domain->name, - strlen(domain->name)+1, - False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(idmap->pid), + MSG_WINBIND_ONLINE, + (uint8 *)domain->name, + strlen(domain->name)+1); } } @@ -594,8 +597,11 @@ void winbind_msg_online(int msg_type, struct server_id src, DEBUG(10,("winbind_msg_online: sending message to pid %u for domain %s.\n", (unsigned int)child->pid, child->domain->name )); - message_send_pid(pid_to_procid(child->pid), MSG_WINBIND_ONLINE, child->domain->name, - strlen(child->domain->name)+1, False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(child->pid), + MSG_WINBIND_ONLINE, + (uint8 *)child->domain->name, + strlen(child->domain->name)+1); } } @@ -612,8 +618,10 @@ void winbind_msg_onlinestatus(int msg_type, struct server_id src, DEBUG(10,("winbind_msg_onlinestatus: " "sending message to pid %u of primary domain.\n", (unsigned int)child->pid)); - message_send_pid(pid_to_procid(child->pid), - MSG_WINBIND_ONLINESTATUS, buf, len, False); + messaging_send_buf(winbind_messaging_context(), + pid_to_procid(child->pid), + MSG_WINBIND_ONLINESTATUS, + (uint8 *)buf, len); break; } } @@ -791,8 +799,9 @@ static void child_msg_onlinestatus(int msg_type, struct server_id src, return; } - message_send_pid(*sender, MSG_WINBIND_ONLINESTATUS, - message, strlen(message) + 1, True); + messaging_send_buf(winbind_messaging_context(), + *sender, MSG_WINBIND_ONLINESTATUS, + (uint8 *)message, strlen(message) + 1); talloc_destroy(mem_ctx); } diff --git a/source3/printing/printing.c b/source3/printing/printing.c index fd1649737b..9bae768c19 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -1535,8 +1535,9 @@ static void print_queue_update(int snum, BOOL force) /* finally send the message */ - message_send_pid(pid_to_procid(background_lpq_updater_pid), - MSG_PRINTER_UPDATE, buffer, len, False); + messaging_send_buf(smbd_messaging_context(), + pid_to_procid(background_lpq_updater_pid), + MSG_PRINTER_UPDATE, (uint8 *)buffer, len); SAFE_FREE( buffer ); diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index a4edeb2cfd..cbc44a224a 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -1212,8 +1212,9 @@ static BOOL srv_spoolss_drv_upgrade_printer(char* drivername) DEBUG(10,("srv_spoolss_drv_upgrade_printer: Sending message about driver upgrade [%s]\n", drivername)); - message_send_pid(pid_to_procid(sys_getpid()), - MSG_PRINTER_DRVUPGRADE, drivername, len+1, False); + messaging_send_buf(smbd_messaging_context(), procid_self(), + MSG_PRINTER_DRVUPGRADE, + (uint8 *)drivername, len+1); return True; } @@ -1310,8 +1311,9 @@ static BOOL srv_spoolss_reset_printerdata(char* drivername) DEBUG(10,("srv_spoolss_reset_printerdata: Sending message about resetting printerdata [%s]\n", drivername)); - message_send_pid(pid_to_procid(sys_getpid()), - MSG_PRINTERDATA_INIT_RESET, drivername, len+1, False); + messaging_send_buf(smbd_messaging_context(), procid_self(), + MSG_PRINTERDATA_INIT_RESET, + (uint8 *)drivername, len+1); return True; } diff --git a/source3/rpc_server/srv_srvsvc_nt.c b/source3/rpc_server/srv_srvsvc_nt.c index d0f2aa500f..bb60f57a14 100644 --- a/source3/rpc_server/srv_srvsvc_nt.c +++ b/source3/rpc_server/srv_srvsvc_nt.c @@ -1231,8 +1231,13 @@ WERROR _srvsvc_NetSessDel(pipes_struct *p, struct srvsvc_NetSessDel *r) if ((strequal(session_list[snum].username, r->in.user) || r->in.user[0] == '\0' ) && strequal(session_list[snum].remote_machine, machine)) { + NTSTATUS ntstat; + + ntstat = messaging_send(smbd_messaging_context(), + session_list[snum].pid, + MSG_SHUTDOWN, &data_blob_null); - if (NT_STATUS_IS_OK(message_send_pid(session_list[snum].pid, MSG_SHUTDOWN, NULL, 0, False))) + if (NT_STATUS_IS_OK(ntstat)) status = WERR_OK; } } |