summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_svcctl_nt.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-06-15 15:18:18 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:57:16 -0500
commit5b678f7a8469e345a6b25fa19ea1a20fce939a21 (patch)
tree6699c3a948622073982cf78897c2f011be5e7d84 /source3/rpc_server/srv_svcctl_nt.c
parent7cbd740c62238406e64819e3594caeca341a25c9 (diff)
downloadsamba-5b678f7a8469e345a6b25fa19ea1a20fce939a21.tar.gz
samba-5b678f7a8469e345a6b25fa19ea1a20fce939a21.tar.bz2
samba-5b678f7a8469e345a6b25fa19ea1a20fce939a21.zip
r7610: can successfully stop and start the 'spooler' service by setting the state for the 'disable spoolss' parameter in memory for an individual smbd
(This used to be commit f19c10d0c3e7701066b765c712df0636e914bf7e)
Diffstat (limited to 'source3/rpc_server/srv_svcctl_nt.c')
-rw-r--r--source3/rpc_server/srv_svcctl_nt.c74
1 files changed, 7 insertions, 67 deletions
diff --git a/source3/rpc_server/srv_svcctl_nt.c b/source3/rpc_server/srv_svcctl_nt.c
index c557036800..230a222b8d 100644
--- a/source3/rpc_server/srv_svcctl_nt.c
+++ b/source3/rpc_server/srv_svcctl_nt.c
@@ -318,6 +318,13 @@ WERROR _svcctl_query_status(pipes_struct *p, SVCCTL_Q_QUERY_STATUS *q_u, SVCCTL_
if ( !(info->access_granted & SC_RIGHT_SVC_QUERY_STATUS) )
return WERR_ACCESS_DENIED;
+ /* try the service specific status call */
+
+ if ( info->ops )
+ return info->ops->service_status( &r_u->svc_status );
+
+ /* default action for now */
+
r_u->svc_status.type = 0x0020;
r_u->svc_status.state = 0x0004;
r_u->svc_status.controls_accepted = 0x0005;
@@ -497,8 +504,6 @@ WERROR _svcctl_start_service(pipes_struct *p, SVCCTL_Q_START_SERVICE *q_u, SVCCT
return WERR_ACCESS_DENIED;
return info->ops->start_service();
-
- return WERR_OK;
}
/********************************************************************
@@ -521,71 +526,6 @@ WERROR _svcctl_control_service(pipes_struct *p, SVCCTL_Q_CONTROL_SERVICE *q_u, S
return WERR_ACCESS_DENIED;
return info->ops->stop_service( &r_u->svc_status );
-
-#if 0
- SERVICE_INFO *service_info;
- POLICY_HND *handle;
- pstring command;
- SERVICE_STATUS *service_status;
- int ret,fd;
-
- /* need to find the service name by the handle that is open */
- handle = &(q_u->handle);
-
- service_info = find_service_info_by_hnd(p, handle);
-
- if (!service_info) {
- DEBUG(10, ("_svcctl_control_service : Can't find the service for the handle\n"));
- return WERR_BADFID;
- }
-
- /* we return a SERVICE_STATUS structure if there's an error. */
- if ( !(service_status = TALLOC_ARRAY(p->mem_ctx, SERVICE_STATUS, 1 )) )
- return WERR_NOMEM;
-
- DEBUG(10, ("_svcctl_control_service: Found service [%s], [%s]\n",
- service_info->servicename, service_info->filename));
-
- /* TODO - call the service config function here... */
- memset(command, 0, sizeof(command));
- if (q_u->control == SVCCTL_CONTROL_STOP) {
- slprintf(command, sizeof(command)-1, "%s%s%s %s", dyn_LIBDIR, SVCCTL_SCRIPT_DIR,
- service_info->filename, "stop");
- }
-
- if (q_u->control == SVCCTL_CONTROL_PAUSE) {
- slprintf(command, sizeof(command)-1, "%s%s%s %s", dyn_LIBDIR, SVCCTL_SCRIPT_DIR,
- service_info->filename, "stop");
- }
-
- if (q_u->control == SVCCTL_CONTROL_CONTINUE) {
- slprintf(command, sizeof(command)-1, "%s%s%s %s", dyn_LIBDIR, SVCCTL_SCRIPT_DIR,
- service_info->filename, "restart");
- }
-
- DEBUG(10, ("_svcctl_control_service: status command is [%s]\n", command));
-
- /* TODO - wrap in privilege check */
-
- ret = smbrun(command, &fd);
- DEBUGADD(10, ("returned [%d]\n", ret));
- close(fd);
-
- if(ret != 0)
- DEBUG(10, ("enum_external_services: Command returned [%d]\n", ret));
-
- /* SET all service_stats bits here...*/
- if (ret == 0) {
- service_status->state = SVCCTL_RUNNING;
- service_status->controls_accepted = SVCCTL_CONTROL_SHUTDOWN | SVCCTL_CONTROL_STOP;
- } else {
- service_status->state = SVCCTL_STOPPED;
- service_status->controls_accepted = 0;
- }
-
- DEBUG(10, ("_svcctl_query_service_config: Should call the commFound service [%s], [%s]\n",service_info->servicename,service_info->filename));
-
-#endif
}
/********************************************************************